Java原码、反码、补码浅谈

原码、反码、补码是对于计算机运算上的。在计算机系统中,信息是用二进制数表示的。在计算机系统中,数值一律是用补码来表示的和存储的,且对于二进制数值来说,最高位是符号位,数1表示数值为负数,0表示数值为正数,其余位表示数的绝对值。例如:
int型十进制数123的二进制表示为:
0000 0000 0000 0000 0000 0000 0111 1011;这就是十进制数123的原码。
易知,-123的原码为:
1000 0000 0000 0000 0000 0000 0111 1011;(最高位是符号位)。
反码:只要记住对于正数而言,正数的反码就是它的原码,负数的反码就是除最高位不变,其余位取反,即1取反为0,0取反为1。例如;
123的反码为:
0000 0000 0000 0000 0000 0000 0111 1011;
-123的反码为:
1111 1111 1111 1111 1111 1111 1000 0100;
补码:只要记住对于正数而言,正数的补码就是它的原码,也是它的反码。负数的补码是原码取反后+1。(取反得到反码,符号位不变)例如:
123的补码为:
0000 0000 0000 0000 0000 0000 0111 1011;
-123的补码为:
1111 1111 1111 1111 1111 1111 1000 0101;
1.已知反码求原码:
对于正数,可知反码即原码。对于负数,同样取反可得,一定要记得符号位保持不变,即负数反码的反码是原码。
2. 已知补码求原码:
对于正数,可知补码即原码。对于负数而言有两种方式求其原码,但是原理一样。第一种:按照求取补码的步骤反过来做即可。也就是说,先从补码-1,得到反码,再从反码得到原码。第二种:将补码看做原码,再取一次补码即可,读者可利用前边的例子证明。
总而言之,反码的反码是原码,补码的补码是原码。这里要注意正负数的区分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值