原码 反码 补码

数值在计算机中以补码形式存储。
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。
机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。
例:十进制中的数 +2 ,计算机字长为8位,转换成二进制就是[00000010]。如果是 -2 ,就是 [10000010] 。

  • 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
  • 反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
  • 补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)

ps:加法:1+0=1,0+0=0,1+1 考虑进位,0111+1110=10101

十进制数原码反码补码
850101 01010101 01010101 0101
-851101 01011010 10101010 1011
90000 10010000 10010000 1001
-91000 10011111 01101111 0111
100000 10100000 10100000 1010
-101000 10101111 01011111 0110(注意+1时,进位)

例: int 强转byte
int强制转换为byte型数据时,会产生一个-128~127的有符号字节

int a = 233;
byte b = (byte)a;
System.out.print(b);
//b = -23

解答:
计算机中数值都是以二进制补码的形式存储
二进制数值的第一位代表数值的符号(正数为0,负数为1)
其中正数的补码等于其原码
负数的补码等于其原码(除符号位)的反码+1
java中
int占32位
byte占8位
int 233=00000000 00000000 00000000 11101001
强转后去掉前面的24个0,得11101001
补码转换为原码的规则:对该补码再次求补码
ps:
符号位为0,代表正数,原码=反码=补码
符号位为-1,代表负数,原码=补码再次求补码(符号位为1,其余各位取反,然后再整个数加1。 )

接着判断首位是1,为负数,取补码得10010110+1=>-23

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jerryzhou;

您的鼓励,将是我的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值