首页 > 编程语言 > 详细

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

时间:2015-06-02 14:58:26      阅读:169      评论:0      收藏:0      [点我收藏+]

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

 

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

原文:http://www.cnblogs.com/BeyondAverage0908/p/4546157.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!