数据加载中……
原码,反码,和补码

在java中一个字节由8个二进位组成。

计算机中有原码,反码,和补码。

原码

将最高为作为符号位0正,1负。其余各位表示数值的绝对值。

+7的原码是 00000111

-7的原码是 10000111

原码的问题是+0和-0的表示

+0是00000000

-0是 10000000

2个数值不同。

反码

一个数如果为正,则它的反码与原码相同,如果为负,则符号位为1,其余取反。

+7是00000111

-7 是 11111000

反码的问题也是+0和-0的问题

+0是 00000000

-0 是 11111111

2个数值不同。

补码

利用溢出,我们将减法变成加法。 一个数如十进制,一个字节一个数,有8位,超过就进一。

一个数为正,则它的原码,反码,补码相同。如果为负,则符号位为1,其余对原码取反。然后加1

+7是 00000111

-7是 11111001

+0是00000000

-0是100000000,然后丢掉最高的9位则为00000000

和+0的表示相同,所以计算机中是采用的是补码。

已知一个负数的补码,转换为十进制。

  1. 先对各位取反。
  2. 将其转换为十进制数
  3. 加上负号,再减去1.

如 11111010 先取反

00000101 转换为十进制

是5 加上负号

是-5 再减去1

是-6

posted on 2008-02-28 15:02 rick 阅读(437) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: