eclipse官网下载收费 怎么办?
- 02年世界杯巴西
- 2025-09-01 06:15:01
- 3324
-128 的 原码,反码,补码
做而论道_CS:
负数的补码,就是【0-X】而已!
别的,什么都不用说!
符号位、取反加一、补码定义式、模,这些都是添乱。
闲话说的越多,就越说不清 “怎么把减法转成加法” 。
-128 的 原码,反码,补码
做而论道_CS:
一个字节中,有 8 位 2 进制数。
可以表示 2^8 = 256 个十进制数。
其中的一半(128 个)是负数。
128 个负数的补码如下:
-1 的补码 = 1111 1111 = 255 (十进制);
-2 的补码 = 1111 1110 = 254 (十进制);
。。。
-128 的补码 = 1000 0000 = 128 (十进制)。
根据这些对应关系,又有人总结出一个公式:
[-X]补码 = 2^8 - X
这就是书上写的 “补码的定义式”。
这个式子,并没有错,只是显得无聊了。
-128 的 原码,反码,补码
做而论道_CS:
实际上,任何负数(-X)的补码都是:0-X。
用二进制简单一算,结果,就出来了。
同样,任何正数(+X)的补码也都是:0+X。
这就不用算了,0+X,就是 X。
补码的来历,就是这么简单。
补码,与原码反码取反加一符号位不变,一丁点关系都没有。
-128 的 原码,反码,补码
做而论道_CS:
首先,你应该懂得,计算机使用补码的意义是什么!
是:【把减法和负数,变换成加法来计算】。
那么,2-2 = 0,计算机讲如何处理?
计算机用 8 二进制计算的过程如下:
0000 0010 + xxxx xxxx = 0000 0000。
其中的 xxxx xxxx,是-2 的补码。
那么:xxxx xxxx = 0000 0000-0000 0010。
导出:xxxx xxxx = (借位 1) 1111 1110。
借位,不属于 8 位数 xxxx xxxx,舍弃即可。
那么,就求出了【-2 的补码是 1111 1110】!
求补码的算法,就是用二进制计算:
-2 的补码 = 0-2。
-128 的 原码,反码,补码
做而论道_CS:
在 8 位时,-128 只有补码,没有原码和反码。
用 “取反加一” 求-128 的补码,于理不通。
由此可知,“取反加一” 方法,并不可靠。