浮点数的二进制表示,要求说明通俗,详细点,谢谢了 100

看到c语言中的浮点类型的二进制表示公式为N=(+-)2的E次方乘以M,E为指数,M为尾数。搞不明白这个公式还有换算的方法,也看了一些说偏移什么的,请大师专业详细慢慢说明下,谢谢了。 以0.5为例子。0.4为一个例子,0.3为个例子让我们这些菜鸟看懂点,什么是符... 展开
疑问:1.10001110100101111000111公式我看1100.1.100数点向右边挪3位1.100则23理解向右边移N位置则 2*N向左移边则2*(-N指数疑问2:1100.01110100101111000110101变1.100011101001011110001112进制再乘231100.1101.100111数字
我有更好的答案
邀请更新
2013-11-30 最佳答案
追问
12.456,第一个步骤12用辗转法得到1100看懂了,小数部分0.456看了下网上小数转换二进制部分看懂了点,是不是0.4560*2=0.9120,取前面的0.一直乘下去,去整数部分作为二进制,取23次部分为精度。 第三部分12.456=1100.01110100101111000110101的2进制表达等于下面的1.10001110100101111000111的2进制再乘以2的3次方
追答
没错乘以除以2就是左右移动小数点 就跟十进制乘除10一样 还有最后一位是误差 只要不是全零就是1 
剩下的就是化为ieee754了 其实用c语言以上过程是编译器和cpu干的
比如
float f=12.456;
unsigned int i=*((int *)(&f));
然后你就会发现 i=010000010M;

其他回答

单精度浮点数位符号位八位指数位23位数位(整数部固定1)

0.5表示
0 01111110 00000000000000000000000
0:符号
01111110:移码表示-1
00000000000000000000000:二进制1.00000000000000000000000
玩意 1.00000000000000000000000 x 2^(-1)

0.4表示
0 01111101 10011001100110011001101
0:符号
01111101:移码表示-2
10011001100110011001101:二进制1.10011001100110011001101十进制约1.60000002384185791015625
玩意 1.60000002384185791015625 x 2^(-2)

0.3表示
0 01111101 00110011001100110011010
0:符号
01111101:移码表示-2
00110011001100110011010:换十进制1.2000000476837158203125
玩意 1.2000000476837158203125 x 2^(-2)

移码二进制表示数字减127……
八位高位1表示128高位0剩都1表示01
简单说 10000000 101111111001111110-1100000012

二进制数表示数点位权0.5第二位0.25第三位0.125类推
二进制0.1十进制0.5二进制0.01十进制0.25二进制0.11十进制0.75二进制1.1十进制1.5

浮点数1XD
展开
空雪梦见 | 发布于2013-11-30
评论

为您推荐:

×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消