原码、反码、补码简介

有符号数,左边第一位是符号位,0为正,1为负。在java中都是有符号数。

##.转换关系

原码:最左侧为符号位,用剩余数位来表示绝对值;

反码:正数和0,反码为其本身;

           负数的反码,符号位不变,其余各位数字取反(0变1,1变0)。

补码:正数和0,补码为其本身;

           负数的补码,在反码基础上,不考虑符号位,最末一位加1。

##.java代码中转化

代码中可用位运算,原码转反码,以int值为例,若a为负整数,则a的反码为:

int b = a ^ Integer.MAX_VALUE;

或    int b = -(~a);

注:java中位运算,会对符号位也做运算。

补码为:b = b-1;  //因为b是负数,所以最后一位加1,在真值上等同于减1.

真值:有符号数,不考虑符号位,剩余数位所组成数字的值,等于真值的绝对值

以java中byte类型正数为例:

十进制

原码

反码

补码

1

0000 0001

0000 0001

0000 0001

-1

1000 0001

1111 1110

1111 1111

0

0000 0000

0000 0000

0000 0000

-128(Byte最小值)

1000 0000

1111 1111

1000 0000

127(Byte最大值)

0111 1111

0111 1111

0111 1111

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值