移 码 : 补 码 最 高 位 加 1 , 正 是 因 为 偏 置 常 数 的 参 与 \color{red}{移码:补码最高位加1,正是因为偏置常数的参与} 1

对补码符号位取反

但是,这个说法并不准确

与其说是符号位取反,倒不如说是最高位加1

大家都知道,移码是用在阶码上的

拿 float 单精度来举例:

八位的阶码,偏置常数是2^(n-1) - 1 = 127 (至于为什么是127而不是128,可参考浮点数的偏置常数的文末)

如果指数是2 —— 0000 0010(二进制)

则阶码应该存127 + 2 =129 ——1000 0010(二进制)

然后,按我们的规则

对指数2最高位加1得:

1000 0010

但 是 , 由 于 偏 置 常 数 是 127 而 不 是 128 \color{red}{但是,由于偏置常数是127而不是128} 127128

故我们要得到阶码的话,还应该减1即:

1000 0001 即129

Ps:127比128少了1

注 意 , 阶 码 是 非 负 数 , 不 存 在 符 号 位 一 说 \color{red}{注意,阶码是非负数,不存在符号位一说}

但 是 , 阶 码 却 可 以 表 示 小 于 0 的 指 数 , 这 就 是 设 置 移 码 , 设 置 偏 置 常 数 的 意 义 ! ! \color{red}{但是,阶码却可以表示小于0的指数,这就是设置移码,设置偏置常数的意义!!} 0

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐