Java位运算
必读:二进制的转换
二进制 → 十进制
将二进制的(111)B转换为十进制的步骤如下:
1. 第0位 1 x 2^0 = 1;
2. 第1位 1 x 2^1 = 2;
3. 第2位 1 x 2^2 = 4;
4. 读数,把结果值相加,1+2+4=7,即(111)B=(7)D。
十进制 → 二进制
将十进制的(43)D转换为二进制的步骤如下:
1. 将商7除以2,商3余数为1;
2. 将商3除以2,商1余数为1;
3. 将商1除以2,商0余数为1;
4. 读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,111,即(7)D=(111)B。
必读:原码,反码,补码(负整数如何转成二制制)
int 值 -7为例子
1.按照绝对值大小转换成的二进制数,称为原码 -->[绝对值大小]
0000 0000 0000 0111 -->原码
2.反码:将二进制数原位取反,所得的新二进制数 -->(1变0,0变1)
1111 1111 1111 1000
3.补码:反码加1称为补码
1111 1111 1111 1000 + 1 = 1111 1111 1111 1001
补码为:1111 1111 1111 1001
重点:在计算机中,负值以其正值的补码形式表达.
也就是说,-7的二进制数是:
是,是,是:1111 1111 1111 1001
正数的话,原码和反码,补码相同!!!!!!
正数的话,原码和反码,补码相同!!!!!!
正数的话,原码和反码,补码相同!!!!!!
左移(<<)
package com.when
public void Main{
public static void main(String[] args){
System.out.println(7<<2)
//输出结果为:28
}
}
执行逻辑
0000 0000 0000 0111 --> (7)D ,左移2位,空位补为0,转换位下面数字
0000 0000 0001 1100 --> (28)D
右移(>>)
package com.when
public void Main{