发布网友
共3个回答
热心网友
浮点有多种存放形式, 常见的windows的单精度浮点, 是有1bit符号位,8bit指数位, 还有23bit小数尾数位
16进制是2进制一种比较简洁的表示方法.
0.12是正数, 符号位为0, 它的2进制近似值是0.00011110101110000101000111101100, 小数点右移4bit以后可以化成科学计数法的小数部分, 值为1.1110101110000101000111101100.
通过以上可以知道, 符号位是0, 8bit指数位是1111111 - 100 = 1111011, 23bit小数尾数位是11101011100001010001111, 这一共是32bit, 合起来就是01111011,11101011,1000010,10001111.
目前内存基本是以字节为单位, 而且windows下是litter endian.所以在内存中从低到高存放的依次是
10001111,11000010,11110101,00111101
这就是windows下常见的单精度浮点的0.12
至于bit分配为什么是0,8,23, 只能说这是别人这么设计的, 如果自己设计, 完全可以不用这样, 另外, 指数为什么还有个1111111, 这也是设计安排的, 将来 自己设计内存, 设计浮点计算, 也可以安排成其他值
浮点存放跟硬件软件都是相联系的
热心网友
一楼的仁兄 ,这个好像跟硬件没什么关系吧 楼主问的是小数点在0前面 还是后面~~~~~~~
热心网友
0x1.eb851e * 2 ^ -4
... 没理论知识知道答案又能怎么样呢...
----
所以说,答案只是拿来印证理论知识的。没理论,把答案放在你眼前你也看不明白不是?
不会?十六进制数都看不出来的人都敢如此评价别人+_+
----
“问题补充:一楼 不会不要乱写 谢谢 虽然你很积极 看清我的题目 在内存中小数部分存放什么 指数部分存放什么?谁告诉你存放16进制的”
存下来给后来人瞻仰 TvT
指责别人不懂可是只有懂的人才有的权利,你这种不知道天高地厚的类型... 最好玩儿了+_,+...
----
好吧 我善良的一面给你最后的提示-w-...
#include <stdio.h>
void main()
{
int a = 0x1eb851e;
printf("%f\n", (double)0x1eb851e / 0x1000000 / 16);
}
----
我的回答和硬件有关系么,有么0v0?
我觉得他问的是0.12在内存里的小数部分是什么指数部分是什么啊,我第一句就已经回答了啊,我还附赠告诉它底数是2啊,我冤啊TvT