java中相关的位操作
运算 | 功能 | 说明 |
---|---|---|
& | 按位与 | a&b a b对应位与 |
按位或 | ||
~ | 位非 | ~a a按位取反 |
> |
位右移 | a>>b a的二进制位向右移动b位,高位补零 |
<< | 位左移 | a< |
二进制位反转思路
以下二进制位用8位做演示
a = 0000 0110 ; 十进制: 6
反转二进制位后
a = 0000 0011 ; 十进制: 3
只保留一个数的最低位,其余位变为0:
n = 0000 1101;
n & 1 = 0000 0001;
假设a = 0000 0110,b=0(用来保存结果)
a每次右移一位,然后最低位与b的最低位 进行位或,然后b左移一位, 直到a == 0为止,这样 b中则是a的反转二进制位的。
过程演示
- a = 0000 011*0*
b = 0000 000*0* - a = 0000 001*1*
b = 0000 000*