转自:http://my.oschina.net/ocare/blog/384339 (1) 二进制转换成十进制小数 (2) 十进制转二进制 1.整数部分:直接转换成二进制 2.小数部分:用2乘十进制小数,可以得积,将积的整数部分取出。在用2乘余下的小数部分,如此循环直到整数部分为0或者为1,此时的0或1为二进制的最后一位 ex: 十进制小数35.8125转换成二进制小数 (35)10=(100011)2 0.8125*2=1.625---------1 0.6250*2=1.250---------1 0.2500*2=0.500---------0 0.5000*2=1.000---------1 (0.8125)10=(0.1101)2 小数是如何在内存中存储?
小数在内存中,不管是单精度还是双精度,存储分为3部分 1.符号位 2.指数位 //用科学计数法存储指数数据 3.尾数部分 其中指数部分有正负,偏移量为127 float 符号占1位,指数8位,尾数部分23位 double 符号占1位,指数11位,尾数部分52位 以35.8125为例来分析计算机如何存储的. 35.8125 二进制数据为 100011.1101 这里我们把二进制写成1.000111101×10^5.从这里我们可以分析出来小数点后面000111101是尾数部分,而指数部分就是127+5(10000100) 这样我们就得出35.8125 在内存中存储为 0 100 0010 0000 1111 0100 0000 0000 0000 0100 0010 0000 1111 0100 0000 0000 0000 (二进制) 4 2 0 F 4 0 0 0 (十六进制) |
|