位运算

  • Post author:
  • Post category:其他


1.异或运算 ^(同为0)

1 ^1=0

1 ^0=1

0 ^1=1

0 ^0=0

  1. 与运算(遇0则0)

    1&1=1

    1&0=0

    0&1=0

    0&0=1

  2. 或运算(遇1则1)

    1|1=1

    1|0=1

    0|1=1

    0|0=0

  3. 左移

    <<

    高位(左边)丢弃,低位(右边)补0

    左移n位,将它的值乘以2的n次方

  4. 右移

符号位不变,低位舍弃,高位补上符号位

右移n位,将它的值除以2的n次方

参与运算:补码参与运算,转换为补码参与运算,再转化为原码,得到结果

原码:一个数的二进制表示方式

反码:

正数:和原码一样

负数:符号位不变,其余位按位取反

补码:

正数:和原码一样

负数:符号位不变,在反码的基础上+1

//计算m的n次方,此时的n是二进制
private int pow(int m,int n){
	int sum = 1;
	while(n != 0){
		//如果n的最后一位是1,则m*1并计入sum
		if (n & 1 == 1){
			sum *= m;
		}
		//右移一位,就要多乘1个m
		m *= m;
		n = n >> 1;
	}
	return sum;
}



版权声明:本文为potatotamato原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。