最简单的做法是将这个负数的相反数,也就是它所对应的正数,的二进制写出来,然后对各个数位的数进行处理,原来是 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.
这就是以上算法的数学原理。