比如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得补码)
若字长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。
换算成二进制,你就自己弄吧。