原码,反码,补码,傻傻分不清?

本文详细介绍了计算机中表示正负数的原码、反码和补码的概念及其转换规则,强调了补码在计算负数时的重要性。通过实例展示了强制类型转换可能引发的数据溢出,并解释了按位与、或、异或和取反运算的原理,以及左移、右移和无符号右移的操作规则。
摘要由CSDN通过智能技术生成

什么是原码,反码,补码?

非常重要!!!

 计算机计算方式:

 原码最左边的符号位,0为正数,1为负数;

 将十进制转为二进制进行计算(原码),但是原码存在弊端,无法计算负数;

 因此出现了反码用来计算负数,反码就是将原码的0变成1,1变成0;

 但是在计算加法等方式时,一旦最终值大于负数,那么就会出现一个[1]的偏差;

 所以这个时候就出现了补码,补码就是在反码的基础上加[1];

 注意:因为补码加了[1],所以负数多出了一个数字[-128],并且它没有原码和反码;

 而正数的一个字节则最大为[127];

 注意:正数的原码、反码和补码都是一样的;负数的补码等于补码加 1,负数的反码等于补码 -1;

 使用:当发生强制类型转换时,会自动去除多余的位数;

     如:int强转为byte时,系统会自动把多出来的3个字节全部清除,不论是否有数据存在,因此强转会出现数据溢出的情况;

int a = 200;

int b = 10;

 按位与的运算规则:0为false,1为true;

 在计算的时候, 只有a和b二进制形式对应的数字位都为[1],计算之后的二进制数的那一位才能是1,否则就是0;

 说一下为什么二进制数位这么长,那是因为一个int数字占4字节,一个字节由8位二进制构成!!!

 以 int a = 200;int b = 10;举例

 如:  int a = 200的二进制数为:0000 0000 0000 0000 0000 0000 1100 1000,

      int b = 10 的二进制数为:0000 0000 0000 0000 0000 0000 0000 1010,

     那么 a & b 时,两个二进制数依照对应的位数一一对应,

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值