首页  > 02年世界杯巴西

eclipse官网下载收费 怎么办?

-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 的补码,于理不通。

由此可知,“取反加一” 方法,并不可靠。