首先,你不看这段话,而是按正确的做法去操作。
比如-2这个数,转成无符号数。
第1步,-2转成补码,(我用8位CPU来演示,道理和32位一样)
(1) 2的原码是0000 0010。由于是-2是负数,所以最高位为1, 就是: 1000 0010
(2)最高位不变,其它位取反 1111 1101
(3)取反结果再加1 : 1111 1110,这就是-2在计算机2进制表示的补码。
然后,把这个数转换为无符号数,实际就是把这个2进制数当作是整数(最高位不再是符号位,而是当作数位计算),计算出它的10进制数,就是 254。
而这个算法,和2的8次方- |-2| = 254是一致的。 (*)
明白上面的计算后,再去套这段话:
“把负数转换成无符号数类似于直接给无符号数赋一个负值"
这段话本身就是不正确的。 “直接给无符号数赋一个负值” ,这句里的无符号数是指什么?
通过上面我们的计算,可以猜出,他所说的“无符号数”实际上就是|-2|,这个负数的绝对值。
再看“结果等于这个负数加上无符号数的模”,这话也是错的。
按我们上面的计算(*)号那一行,可以猜出,这里的“无符号数的模”这话,实际上指的是 2的n次方。
这样,你先理解负数补码转换成无符号数的实际计算方法,再用正确的计算方法去理解这段话,就大概清楚这书的作者想说什么了。
写书的人,估计是不懂计算机的人写的,这本书大概也是翻译外文,或者抄袭其它人的,翻译的不到位或没抄明白。
“无符号数的模”,这话你能理解吗?反正我是不理解,应该是我数学没学好吧,搞不清楚他说的模,是不是我学到的数学上的模的定义。
所以,如果你不理解 原码,反码,补码这些知识,看这段话是看不明白的。