原码 反码 补码 位运算

原码 反码 补码

正数的原码,反码,补码都是一样的

原码:转换为二进制之后的一串数字,第一位表示符号位,0为正,1为负。

反码:负数的反码,符号位不变,其他位取反,0变成1,1变成0。

补码:负数的补码等于其反码加1,符号位参与运算

原码不能解决负数计算的问题

反码不能解决跨0(例-6+7)的问题

补码解决了负数不能跨零计算的问题,并且补码还可以记录一个特殊的值-128,所以byte的取值范围是(-128-->127)

位运算

<<  左移

不分正负数,右边(低位)补0

例一个byte 00000001(1)左移3位  1<<3  ,00000001整体左移三位,多出的部分舍弃,右边补0。变成 00001000

>>  右移

 整体右移,正数高位补0,负数高位补1。

>>>  无符号右移

不管正负,高位全部补0

&  与运算 

有0为0,全1才为1。

I   或运算

    有1为1,全0为0

~   非 

 一个数按位取反  

^ 异或

  相同为0,不同为1

你可能感兴趣的:(原码,反码,补码,位运算)