JAVA中关于float类型的疑问。 110
我知道在float的存储中,符号位占1位,指数占8位,尾数占23位。10110111=1.0110111*2^111我想知道尾数的1.0110111是怎么存放到后23位的...
我知道在float的存储中,符号位占1位,指数占8位,尾数占23位。
1011 0111 = 1.011 0111 * 2^111
我想知道尾数的1.011 0111是怎么存放到后23位的?很费解。明明尾数就是小数了啊,它是怎么存储的?
像3.1415926535 它又是怎么存储的呢?它明明已经是尾数了啊 展开
1011 0111 = 1.011 0111 * 2^111
我想知道尾数的1.011 0111是怎么存放到后23位的?很费解。明明尾数就是小数了啊,它是怎么存储的?
像3.1415926535 它又是怎么存储的呢?它明明已经是尾数了啊 展开
3个回答
展开全部
首先存放都是二进制,第一步你已经做好了,然后位数的23位是从小数点右边开始算起。不满23位补零,举个例子
0.2356的内存存储格式
将0.2356化为二进制后大约是0.00111100010100000100100000。
将小数点右移三位得到1.11100010100000100100000。
从小数点右边数出二十三位有效数字,即11100010100000100100000放入第22到第0位。
由于0.2356是正的,所以在第31位放入“0”。
由于我们把小数点右移了,所以在第30位放入“0”。
因为小数点被右移了3位,所以将3化为二进制,在左边补“0”补足七位,得到0000011,各位取反,得到1111100,放入第29到第23位。
最后表示0.2356为:0 0 1111100 11100010100000100100000
展开全部
二进制小数1.011 0111, 转单精度浮点存储时
正数,符号位为0,[0]
正好是1.xxx的指数形式,所以指数位也为0,根据ISO标准+127,得[0111 1111]
尾数,先省略整数1,得011 0111,补上16个0得[011 0111 0000 0000 0000 0000]
合起来得
[0][0111 1111][011 0111 0000 0000 0000 0000]
[0011 1111 1011 0111 0000 0000 0000 0000]
3F B7 00 00 大端数的字节
小端数字节分别为00 00 B7 3F
正数,符号位为0,[0]
正好是1.xxx的指数形式,所以指数位也为0,根据ISO标准+127,得[0111 1111]
尾数,先省略整数1,得011 0111,补上16个0得[011 0111 0000 0000 0000 0000]
合起来得
[0][0111 1111][011 0111 0000 0000 0000 0000]
[0011 1111 1011 0111 0000 0000 0000 0000]
3F B7 00 00 大端数的字节
小端数字节分别为00 00 B7 3F
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面的哥哥回答的很好二进制小数1.011 0111, 转单精度浮点存储时
正数,符号位为0,[0]
正好是1.xxx的指数形式,所以指数位也为0,根据ISO标准+127,得[0111 1111]
尾数,先省略整数1,得011 0111,补上16个0得[011 0111 0000 0000 0000 0000]
合起来得
[0][0111 1111][011 0111 0000 0000 0000 0000]
[0011 1111 1011 0111 0000 0000 0000 0000]
3F B7 00 00 大端数的字节
小端数字节分别为00 00 B7 3F
正数,符号位为0,[0]
正好是1.xxx的指数形式,所以指数位也为0,根据ISO标准+127,得[0111 1111]
尾数,先省略整数1,得011 0111,补上16个0得[011 0111 0000 0000 0000 0000]
合起来得
[0][0111 1111][011 0111 0000 0000 0000 0000]
[0011 1111 1011 0111 0000 0000 0000 0000]
3F B7 00 00 大端数的字节
小端数字节分别为00 00 B7 3F
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询