原码,反码,补码

原码,反码,补码的概念

  • 历史背景
    人们为了1 和 -1 相加等于0的客观世界运算而创造出来的。主要时为了对负数做处理

  • 前置说明
    计算机的存储是利用 二进制的补码来进行存储的.
    以一个字节byte 8位为例:
    对于正数1,00000001它的反码和补码都是本身。
    对于负数-1,10000001他的反码是11111110,它的补码是111111111

  • 原码
    原码是数据原本的二进制表示 如 1的原码(00000001),-1的原码(10000001)
  • 反码
    原码除了符号位按位取反之后的二进制表示 如 -1的原码(11111110)
  • 补码
    反码+1的二进制表示,如 -1的补码(11111111)

所以:当我们获取文件流数据,或者网络数据流数据的byte,要获取对应的int值做输出等操的时候,要&0xff,原因就是为了保证补码的一致性
如:获取byte数据 -127 的 原码即 11111111 反码 10000000 补码 10000001
转为int时高24位补1,-127的int补码:11111111 11111111 11111111 10000001
按位&0xff 得 00000000 00000000 00000000 10000001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值