为什么浮点数的偏置常数用127而不是128

偏置常数

  • 通常编码位数为n时,bias取2^{n-1},或者2^{n-1}-1,当bias为2^{n-1},时移码和补码仅第一位不同,移码用来表示浮点数的阶。

浮点数格式的规格化数的表示范围

  • 32位单精度浮点数
    32位

    单精度bias为2^{7}-1,为127
    双精度bias为2^{10}-1,为1023
  • 64位双精度格式
    第0位数符S,第1~11位为移码表示的阶码,第12到63位为二进制原码小数表示的尾数M,规格化尾数的小数点后第一位总是1,故规定第1位默认的1不明显表示出来,这样可以用52个数位表示53有效数字。

为什么32位单精度浮点规格化的偏置常数用127,而不是128?

  • 用127,阶码的范围是0000 0001(-126)~1111 1110(127)
  • 用128,阶码的范围会变成0000 0001 (-127)~1111 1110(126)

显然如果使用128作为偏置常数,能表示的最大的指数是126,比127小的多,所以使用127作为偏置常数。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容