位运算总结学习

二进制:

位:数据存储最小单元,一字节(byte)=8位(bit)。

无符号数:没有符号位,所有二进制均表示数值。

有符号数:最高位表示符号,0为正,1为负。

原码、补码和反码(有符号数)

正数:原码、反码、补码都一样

负数:反码--符号位不变,其余位取反;补码--反码+1

计算机运算的时候,都是以补码的方式来运算的,因为二进制数在内存中是以补码的形式存放的;

 

按位与 a&b   1&1->1

按位或 a|b     1|1/1|0/0|1 ->1

按位异或 a^b   1^0/0^1->1

按位取反 ~a  1=>0/0->1 正数的取反等于正数加1取负,例如11的取反等于-12;负数的取反等于负数加1取正,例如-12的取反等于11

左移 a<<b    二进制a最后加b个零,丢弃高位b位,结果值实际上是a*2^b,因为在二进制数后添一个0就相当于该数*2

带符号右移 a>>b  舍弃二进制后面b位,正数高位补0,负数高位补1,结果值为a/2^b(取整)

无符号右移a>>>b  无论是正数还是负数,高位通通补0

 

posted @ 2019-07-26 10:03  Johnny-miao  阅读(245)  评论(0编辑  收藏  举报