原码反码补码之间怎样换算?

比如32767和-32767,怎么就全部变成0和1了呢?求详解

x =32767d =111 1111 1111 1111b
若字长16位,则
[x]原=[x]反=[x]补=0111 1111 1111 1111b(最高位的0是符号位,表示正数)
.
y = -32767d = -111 1111 1111 1111b
若字长16位,则
[y]原=1111 1111 1111 1111b (最高位的1是符号位,表示负数)
[y]反=1000 0000 0000 0000b (将原码除了符号位之外的数值位取反得反码)
[y]补=1000 0000 0000 0001b (将反码末位加1得补码)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-09-04

在计算机系统中,数值,一律采用补码表示和存储。

补码的定义式如下:

  当 X >= 0: [ X ]补码 = X;

  当 X  <  0: [ X ]补码 = 2^n -| X |。

当码长 n 为 16 时:

  32767 的补码,就是 32767。

    换算成二进制,就是 16 个 1。

 -32768 的补码,就是 65536-32768 = 32768。

    换算成二进制,你就自己弄吧。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网