问题描述
- 关于C语言无符号规格化的一个理解
- 看深入理解计算机系统里面。关于规格化的一段描述:
......也就是说,指数的值是E=e-Bias其中e是无符号数,其位表示为ek-1···e1e0而Bias是一个
等于2k-1 -1(单精度是127,双精度是1023)的偏置值。....我知道C语言单精度的指数位是8位,取值范围是-126到127.但是我对E=e-Bias不理解。这里的e代表的是什么?本人小白求解释。。
解决方案
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次方)。
解决方案二:
給你一個鏈接
时间: 2024-10-30 15:15:13