【二进制中的源码、补码、反码】

二进制中的源码、补码、反码

在java日常开发中,肯定会碰到各种锁,我在学习DES加密算的过程过了解到,想要实现DES就得对二进制的源码、补码、反码以及对位运算有所了解,所以写这篇文章做记录,也防止以后自己忘记在来翻阅。


简单补充

网上很多大佬文章都用 5 来举例,这里我也就借鉴下。首先要清楚的是在二级制都是用 0 和 1 来表示数字的,逢二进一。

源码

在二进制中,符号位(左边第一位)的 0 表示正数,1 表示负数。
例如:
5 的二进制数为: 00000101,它的源码为: 00000101;
而 -5 就是将符号位改为 1 来表示,为:10000101。

补码

补码是二进制中常用的表示负数的方法,补码就是将二进制数上所有位数全部取反,在加上 1 。
例如:
5 的二进制数为:00000101,这里要注意的是正数的源码和补码是相同的,所以是他本身;
-5的补码:
对 5 的二进制位取反: 00000101 ------ 11111010;
在进行加 1 : 11111010 + 1 --------- 11111011;
由此得出 -5 的补码为 11111011 ,因为它使可以正确的用来负数的加减运算,所以常用。

反码

反码就好理解了,就是将二进制数的源码符号位不变,将所有取反即可,因为正数是补码和源码是想用的,所以 5 的反码还是: 00000101;而 -5 的反码就为 : 10000101。

总结

在二进制中,源码、补码、反码是常用的表示负数的方法,其中补码较为常用,因为它可以正确的被用来负数的加减操作。其他两种了解,掌握补码即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值