用机器表示十进制0,编码唯一的是

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:28:53
A原码 B反码 C补码 D都是
并说明理由

C补码
这个问题可以陈述为+0和-0如何表示的问题,
原码的首先符号为+0是0,-0是1,直接排除
反码的自然符号为+0是0,-0是1,也排除
现在知道该选C了。
下面看为什么:
补码的正数表示是
0 xxxxxxx 0是符号位其他为数据位,根据机器字长而不同。
我们假设采用16位int的表示。
+1 是 0 0000000 00000001
+0 是 0 0000000 00000000
负数表示方式是它相反数的二进制按位取反再加1
看-1的:
0 0000000 00000001 取反得 1 1111111 11111110 加1得 1 1111111 11111111
-0 :
0 0000000 00000000 取反得 1 1111111 11111111 加1得 (1)0 0000000 00000000
注意,虽然-0 最后进位有个1,但它是第17位的了,计算机会自动将其舍掉,因为我们只取前16位
这样 +0和-0都是 0 0000000 00000000

C

用8位来表示0

原码00000000和10000000都是0
反码00000000和11111111都是0
只有补码是用00000000表示0
而补码的表示范围是从-128~127正好256个,所以一个都不重复。