episode2

//it is very interesting,an excellect teacher,  I love it

1,why negative is indicated the way it is indicated

2,how float  is indicated

3,type conversion of negative integer type

4,type conversion between  float  and intergral type

----types

----negative denotation:why use the way that reverse all the bits and add 1 to represent negative dates.//very clear explain,very excellent teacher.

--take 7 for example, if use 1000 0111 as -7, than do the add operation between 7 and -7,the result is -14.
   0000 0111

+ 1000 0111

= 1000 1110

of course this does not work.

--we want 7 and -7 to get full 0,now firstly we try the result  full 1,because full 1 is easier to calculate than full 0. like

0000 0111

+ ???? ????

= 1111 1111

we can see what we need is

1111 1000

it it the reverse of 7:0000 0111,

--to get the result full 0, we need to add 1 to the current full 1,

1111 1111

+  0000 0001

=10000 0000     the1 in the result is overflow,and  does not count, so get 0,which is what we want.

therefore, the data we calculted should add 1 correponding to get the full 0.

which is  1111 1000 + 1,

the above is why negative dates are indicated in its way: reverse all the bits(execpt the sigh bit) and add 1.

--char, short, int, long, type conversion

--unsigned type, the simplest way, follow the protocal, electronics does not care the lost bytes.

small bytes to big bytes, just copy to low bytes.

big bytes to small bytes, cut the high bytes,use the low bytes.

--signed type, render sign expansion

to keep the signed characteristic, with negative sign, all expanded bits should be 1.domino effect

1000 0111

0000 0000 0000 0000

1111 1111 1000 0111   domino effect

----float

float:

1bit(符号位)

8bits(指数位)

23bits(尾数位)

double:

1bit(符号位)

11bits(指数位)

52bits(尾数位)

4 bytes, 有2^32个映射能够表示 -2^31到2^31-1个数。

--float protocal: (符号s) 1.xxxxx *2^(exp-127)

1位符号位s,8位exp, 23位表示小数点后的数据.xxxx

对于exp,magnitude only, int 0-255, 这意味着指数的范围是-127到128

对于23位.xxxx, when all 1, means 1减去2的-23次方,是一个与1很接近的数。当这23位 all 1 再加上1后,这个float数据就变成一个能被2整除的数。

_______________

_关于取值范围

float的指数范围为-127~128,而double的指数范围为-1023~1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。

float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

_关于精度: 就是小数点后能有多少位

float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。

float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;double:2^52 = 4503599627370496 ,一共16位,其精度为15~16位。

__________________________________

--eg. 7

7.0 * 2^0

3.5 * 2^1

1.75*2^2

乘号左边范围是,1-1.9

乘号右边指数不能小于-127,否则type double love it .

----float and int , types conversion

--eg1,

int i =5;

float f =i;

cout<<f<<endl; //  f is printed 5.000000

--eg2,

int i = 37;

float f = *(flat*)&i;// f is a very very small thing, barely meaningful

--eg3,

float f=7.0;

short s = *(short*)&f;

for the 4 types of the float date, the pointer point at the highest byte address,thus the short date get the high two bytes.

编程范式 epesode2 negative values, float 精度的更多相关文章

  1. ReactiveX编程范式

    ReactiveX http://reactivex.io/ An API for asynchronous programmingwith observable streams The Observ ...

  2. 编程范式感想(一)——在C中进行对模板功能的实现

    最近一直在看网易公开课上的编程范式的公开课,斯坦福的教授讲的真的非常到位,感觉还是要好好学习下C还有汇编,熟悉下计算机的内存机制什么的. 大家都知道关于模板或者说范式的问题,基本在很多高级语言上都有实 ...

  3. 【编程范式】C语言1

    最近在网易公开课上看斯坦福大学的<编程范式>,外国人讲课思路就是清晰,上了几节课,感觉难度确实比我们普通大学大很多,但是却很有趣,让人能边学边想. 范式编程,交换两个数,利用 void * ...

  4. 编程范式:命令式编程(Imperative)、声明式编程(Declarative)和函数式编程(Functional)

    主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 命令式编程: 命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么. 比如:如果你想在一个数字集合 collec ...

  5. Linux Kernel C语言编程范式

    介绍 不同的编程语言具有不同的抽象原语(如下),有的原语抽象层次低,有的原语抽象层次高.其中函数式.DSL是这几年十分热门的编程语言概念. 过程式抽象原语:变量 对象式抽象原语:对象 函数式抽象原语: ...

  6. 冒号课堂 编程范式与OOP思想

    上篇:编程范式与编程语言 第1课 开班导言 第2课 重要范式 第3课 常用范式 第4课 重温范式 第5课 语言小谈 第6课 语言简评 下篇:抽象机制与对象范式 第7课 抽象封装 第8课 抽象接口 第9 ...

  7. Python3学习之路~6.1 编程范式:面向过程 VS 面向对象

    编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种 ...

  8. Edit Distance问题在两种编程范式下的求解

    本文已授权 [Coding博客](https://blog.coding.net) 转载 前言 Edit Distance,中文叫做编辑距离,在文本处理等领域是一个重要的问题,以下是摘自于百度百科的定 ...

  9. jQuery中的编程范式

    浏览器前端编程的面貌自2005年以来已经发生了深刻的变化,这并不简单的意味着出现了大量功能丰富的基础库,使得我们可以更加方便的编写业务代码,更重要的是我们看待前端技术的观念发生了重大转变,明确意识到了 ...

随机推荐

  1. PHP代码标识

    1. Echo语句(打印) <?php echo "想学习PHP么"; ?> 2. 计算表达式 <?php echo 12*3; ?> 3. 字符串 < ...

  2. CentOS 配置 iptables 配合 ss

    转自:http://www.jianshu.com/p/28b8536a6c8a 环境: CentOS 6 shadowsocks iptables 在安装了ss-bash后,ss-bash每添加一次 ...

  3. Angular1.x组件通讯方式总结

    Angular1开发模式 这里需要将Angular1分为Angular1.5之前和Angular1.5两个不同的阶段来讲,两者虽然同属Angular1,但是在开发模式上还是有较大区别的.在Angula ...

  4. [solr] - IKAnalyzer 扩展分词库

    在solr中加入自己的扩展分词库方法: 参考文章: http://www.cnblogs.com/dennisit/archive/2013/04/07/3005847.html 1.在solr的we ...

  5. python中使用xlrd、xlwt操作excel表格详解

    python读excel——xlrd 这个过程有几个比较麻烦的问题,比如读取日期.读合并单元格内容.下面先看看基本的操作: 首先读一个excel文件,有两个sheet,测试用第二个sheet,shee ...

  6. 数据库&数据仓库

    数据仓库的定义: 世界公认的数据仓库概念创始人W.H.Inmon在<数据仓库>(Building the Data Warehouse)一书中对数据仓库的定义是:数据仓库就是面向主题的.集 ...

  7. ios webview中关于宽高的总结

    测试一 测试的物料: <html> <head> <meta charset="UTF-8"> <meta name="view ...

  8. Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)

    在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子. 请通过以下方式下载github源代码: git clone https://github.com/d ...

  9. [转载]iOS 归档操作 NSCoding

    最近一个项目需要保存到本地文件,想用plist,但是发现很多内容是自定义的,于是只能自己归档接档.不难,找了一篇范文大家保存一下,方便以后学习使用. 转自:http://mobile.51cto.co ...

  10. PowerDesigner里数据表里AUTO_INCREMENT(自增)的设置

    使用流程: File->New Model->Model types->Physical Data Model->Physical Diagram 在下边DBMS里选择:MyS ...