Java中负数计算原理原码、反码和补码:如int类-1为32个1组成

首先需要了解原码、反码和补码的概念:

对于正数:反码、补码都与原码一样。

    如:40

  • 原码:00101000
  • 反码:00101000
  • 补码:00101000

对于负数:反码:原码中除去符号位,其他的数值位按位取反,即0变1,1变0,补码:反码+1

如:-107:

  • 原码:1 1 1 0 1 0 1 1
  • 反码:1 0 0 1 0 1 0 0
  • 补码:1 0 0 1 0 1 0 1

为什么要设计补码

上面介绍了原码、反码和补码三者的概念,那么,计算机中为什么要设计补码这一概念呢?因为直接用原码涉及到减法操作,这就增加了计算机底层电路涉及的复杂性。而用补码操作时,当减去一个数时,可以看做加上一个负数,然后转变位加上这个负数的补码。即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.

 计算举例(byte):1+(-1)=0

  • 1在计算机存储为0000 0001

       -1为1000 0001——>反码为1111 1110——>补码(反码+1)1111 1111

  • 所以-1在计算机存储为1111 1111

       即0000 0001 + 1111 1111=1 0000 0000因为byte只有8bit位所以最后结果为0000 0000

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值