2 maoxunxing maoxunxing 于 2014.12.02 22:05 提问

关于C语言无符号规格化的一个理解

看深入理解计算机系统里面。关于规格化的一段描述:
......也就是说,指数的值是E=e-Bias,其中e是无符号数,其位表示为ek-1···e1e0,而Bias是一个
等于2k-1 -1(单精度是127,双精度是1023)的偏置值。....

我知道C语言单精度的指数位是8位,取值范围是-126到127.但是我对E=e-Bias不理解。这里的e代表的是什么?本人小白求解释。。

2个回答

eagleyan
eagleyan   Rxr 2014.12.03 00:06
已采纳

e就是你的指数值,给个例子

0100 0010 1**111 0110 0000 0000 0000 0000**

第一个粗体的0是符号位,后面的10000101 = 133(十进制),这个是个单精度数,bias=127,所以指数是E - bias = 133 - 127 = 6
第二个粗体长串111 0110 0000 0000 0000 0000是你的小数部分.111011
这个数字的F = .111011 + 1 = 1.111011
这个的值 = 1.111011 x 2^6 = 1111011 = 123

这里之所以采用bias是因为指数从0~255,如何表示负数(小于1)的数,采用的是e - bias。(e大于127,是大于1,e小于127是小于1)。这样既可以表示大的数,也可以表示非常小的数(2的-128次方)。

u012823258
u012823258   2014.12.02 22:59

給你一個鏈接

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!