【JAVA基础】原码,反码,补码

目录

一、原码

二、反码

三、补码


一、原码

        很简单 就是本身翻译成二进制

        比如 2 翻译成2进制就是 00000010

二、反码

        因为使用原码进行加法的运算可以实现,但是要是去进行减法的运算很困难,计算机需要进行很多操作,所以想用加法来替代掉减法使用加法来实现减法

        3-2  = 3+ (-2)

        正数的 源码反码都一样   符号位 1表示负数 0表示正数

        所以3 的源码是 00000011 反码也是 00000011

        -2       的源码是 10000010 反码(除符号位全部取反)是 11111101

        两者相加     (1)00000001  需要把溢出的最高位放到最后去 

        这涉及到了最高位的进位问题 使得运算效率降低  

        其次还有 11111111 00000000 都表示0 这种情况产生浪费

三、补码

        因此 产生了补码  补码就是 给反码+1

        正数的原码反码补码都一样 还是上面那个问题

        3                                        00000011

        -2 反码:11111101 补码: 11111110

        相加  (1)00000001  溢出位直接抛弃   得到1   避免了最高位的进位问题

        11111111 00000000 表示不同 扩大了可以表示的整数范围

       补码:  11111111  反码:11111110 原码: 10000001    即:-128 

        

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值