n 等于 16,通过 sc = n - (n >>> 2) 将 sc 赋值为 12,请问 n - (n >>> 2) 是什么高端写法?为什么要这么写?请大佬赐教
>>>
无符号移位操作 这个就相当于 n-(n/(2^2))
n>>>2就是n无符号右移2位, 相当于最后面的小数点左移了2位, 相当于除以了2的2次方;
n>>>5 n缩小了 2的5次方倍:
就是说:
sc = n - n/2^2
public static void main(String[] args) {
int sc = 0;
int n = 16;
System.out.println("16>>>2 --> " + (16>>>2));
sc = n - (n>>>2);
System.out.println("n=16, sc = n - (n>>>2); sc = " + sc);
}
16>>>2 --> 4
n=16, sc = n - (n>>>2); sc = 12
左移整个数往左边走,右面补0, 补一位, 就扩大2倍, 补n位就扩大2的n次方倍; 右移正相反~