Beyond平君

导航

C语言再学习——数据类型

C语言数据类型

 

原码:最高位表示符号位:0表示+,1表示-;

[+1] = 0000 0001

[-1] = 1000 0001

 

反码:

反码转反码:对反码再一次求反码

正数的反码是其本身;

负数的反码是其原码的基础上,符号位不变,其他位各个取反。

[+1] = [00000001] = [00000001]

[-1] = [10000001] = [11111110]

 

补码:

补码转原码: 对补码再一次求补码

正数的补码是其本身;

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001] = [00000001] = [00000001]

[-1] = [10000001] = [11111110] = [11111111]

 

在计算机内部不使用原码(原因:由于在做减法计算时会出现错误),反码(原因:对于0这个数值比较特殊,+0和-0的反码表示不同)表示数值。计算机采用的是补码进行采用存储数据。

详见:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

 

数据类型决定了占用内存空间大小。

高占位浮可以打印低占位浮,使数据的大小不会缺失,但是低占位打印高占位可能导致数据的缺失。例如:int类型可以打印short类型和char类型。

 

float类型:

无论是单精度还是双精度在存储中都分为三个部分:

  1. 符号位(Sign) : 0代表正,1代表为负
  2. 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
  3. 尾数部分(Mantissa):尾数部分

 

其中float的存储方式如下图所示:

 

而双精度的存储方式为:

 

 

 

float和double类型是有精度问题的:float到小数点第6位,double类型的精度是到小数点后面第15位。

 

如非声明,则为原创 糊涂猫until

 

posted on 2015-06-02 13:14  Beyond平君  阅读(209)  评论(0编辑  收藏  举报