- java程序中 >>> 是右移移位运算符,表示无符号右移
a>>>b,a表示操作数,b表示要移动的位数,右移后左边空出的位使用零来填充,移除右边的位被丢弃。 - 无符号:仅包含非负值,即0到255; 有符号:由负值和正值组成,但格式不同,例如关于8位数字系统中0 ~ 127,-1 ~ -128
- 无符号的可以具有较大的正值,而不能为负值。unsigned使用前导位作为值的一部分,而signed版本使用最左边的位来标识数字是正数还是负数。
- 移动的位数超过了该类型的最大位数,如果移进高阶位(31位或63位),那么该值将变为负值
关于移位符的例子:
public static void main(String args[]) {
reverseBits(6);
int i;
int num = 0xffffffe;
System.out.println(num);
for(i=0; i<4; i++) {
num = num << 1;
System.out.println(num);
}
}
190题解:
public static int reverseBits(int n) {
int ans = 0;
for(int bitsSize=31; n!=0; n=n>>>1, bitsSize--) {
ans += (n&1) << bitsSize;
}
return ans;
}