1.异或运算 ^(同为0)
1 ^1=0
1 ^0=1
0 ^1=1
0 ^0=0
-
与运算(遇0则0)
1&1=1
1&0=0
0&1=0
0&0=1 -
或运算(遇1则1)
1|1=1
1|0=1
0|1=1
0|0=0 -
左移
<<
高位(左边)丢弃,低位(右边)补0
左移n位,将它的值乘以2的n次方 -
右移
符号位不变,低位舍弃,高位补上符号位
右移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 版权协议,转载请附上原文出处链接和本声明。