位运算
概述
位: 英文: bit. 音译:比特. 比特位.也称为二进制位.是计算机存储数据的最小单位.(存储容量的最小单位是字节)
位运算: 计算机中对于二进制数据的计算方式.就是直接对整数在内存中的二进制位进行计算.
分类
位运算通过位运算符来进行.位运算符包括:
符号 | 含义 |
---|---|
&(按位与) | 有0,则结果为0 |
|(按位或) | 有1,则结果为1 |
^(按位异或) | 相同为0,不同为1 |
~(按位取反) | 0变1,1变0 |
<<(左移) | 每移动1位,则该数乘以2的1次方 |
`>>有符号右移 | 每移动1位,则该数除以2的1次方 |
`>>>无符号右移 | 无论正负,高位均补0 |
补充:
有符号右移和无符号右移对于正数没区别,对于负数就是,有符号负数右移的时候高位需要补1.表示负数的意思.
示例
//以6,16为例
//6的二进制位数据为: 0000 0110
//16的二进制数据为: 0001 0000
1. 6 & 16 = 0000 0000 = 0
2. 6 | 16 = 0001 0110 = 22
3. 6 ^ 16 = 0001 0110 = 22
4. ~ 6 = 1111 1001(补) = 1111 1000(反) = 1000 0111 = -7
//反 = 补 - 1
//原 = 反(符号位不变,其余位按位取反)
5. 6 << 2 = 6 * 2 * 2 = 24
6. 6 >> 2 = 6 / 2 / 2 = 1
7. 6 >>> 2 = 6 / 2 / 2 = 1
总结
1.十进制与二进制的转换可采用8421码.
2.正数的源码,反码,补码都是相同的.负数的源码,反码,补码不同,中间要转换.
3.位运算是二进制数据在内存中的计算方式.比较偏底层.面试中可能会问到.当你面试一些大厂或者压工资时可能会让你有意想不到的收获.