整型(int,short int,long等)与浮点型(float,double等)在内存中的储存方式不同
以下都时以32位的编译器来讨论
整型
int类型的整型有4个字节,32位比特位
如:int a=5,在内存中的二进制为
源码/反码/补码: 00000000 00000000 00000000 00000101
浮点型
浮点型储存不同,拿同样占4个字节的float类型来举例
如:float a=2.25
转化为二进制—> 10.01= (-1)^0 * 1.001 * 2^1
将这个里面的一些数提取出来 (-1)^0 * 1.001 * 2^1
| | |
0 (S) 001(M) 1(E)
于是将其S,M,E的值存进4个字节中S-1bit,E-8bit,M-23bit,并且E为了防止出现负数无法存储的情况,将其10进制值加上127,(011--3)3+127=130——(二进制)10000010
即 0(S) 10000010(E) 00000000000000000000000001(M) --->
01000001000000000000000000000000011
这就是float类型的2.25在内存中的方式
如果int类型的变量用浮点数打印,尽可能打印出超大的数
同理,float类型的变量用整型打印,有可能时一个极小的数,出现0.00的结果
1182

被折叠的 条评论
为什么被折叠?



