A Level 计算机科学辅导:负数的二进制表示

周志高 提交于 周二, 04/29/2025 - 10:01

最简单的做法是将这个负数的相反数,也就是它所对应的正数,的二进制写出来,然后对各个数位的数进行处理,原来是 1 的,改成 0, 原来是 0 的,改成 1, 这样操作得到一个二进制数,再对这个二进制数加 1,即可得到负数的二进制表示。

例如: 将十进制数 - 31 用二进制来表示。

Step 1: 将 - 31 的相反数  31 用二进制来表示,即  00011111.

Step 2: 将 00011111 各个数位进行转换,原来是 0 的换成 1, 原来是 1 的换成 0, 得到 11100000

Step 3: 11100000 + 1 = 11100001, 最后的结果 11100001 转成十进制就 -31.

以上算法的原理在于,假如有一个二进制数 a, 那么对它各个数位上的值做转换,原来是 1 的换成 0, 原来是 0 的换成1, 得到二进制数 b, 那么必然有 a + b = 11111111,将这个二进制转成十进制数,会发现,其结果是 -1. 也就是说 a + b = -1. 也就是说,b = -a - 1. 

那么,令 c = b + 1, 即有 c = -a - 1 + 1 = -a.

这就是以上算法的数学原理。