什么是原码,反码,补码?
计算机计算方式:
原码最左边的符号位,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 时,两个二进制数依照对应的位数一一对应,