# 一、位运算符的含义
Java定义的位运算直接对整个类型的位进行操作,这些整数类型包括long、int、short、char、和byte。
既然位运算符在整数范围内对位操作,因此必须理解两点:Java是如何储存数值、如何表示负数的。
位运算及结果
运算符 | 作用 |
---|---|
~ | 按位非(NOT)一元运算 |
& | 按位与(AND) |
| | 按位或(OR) |
^ | 按位异或(XOR) |
>> | 右移 |
>>> | 右移,左边空出的位以0填充 |
<< | 左移 |
&= | 按位与赋值 |
|= | 按位或赋值 |
^= | 按位异或赋值 |
>>= | 右移赋值 |
>>>= | 右移赋值,左边空出的位以0填充 |
<<= | 左移赋值 |
二、位逻辑运算符
1、介绍位逻辑运算符介绍
&emspl;&emspl;位逻辑运算符有"与(AND)"、"或(OR)"、"异或(XOR)"、"非(NOT)",分别用"&"、"|"、"^"、"~"表示。位运算符应用于每个运算数内的每个单独的位。
位逻辑运算符结果
A B | A|B | A&B | A^B | ~A |
---|---|---|---|---|
0 0 | 0 | 0 | 0 | 1 |
1 0 | 1 | 0 | 1 | 0 |
0 1 | 1 | 0 | 1 | 1 |
1 1 | 1 | 1 | 0 | 0 |
五、反码、补码和原码
1、原码
所有的整数类型以而进驻数位来表示。例如,byte型值42的二进制代码是00101010,其中每个位置代表2次方,在最右边的位以20开始,向左下一个位置是21或2,然后是23,24,25等,以此类推。42的二进制代码中位置1、3、5的值为1(从右边以0开始数),这样42是21+23+25的和,也既2+8+32=42。
2、反码
正数的反码是它本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反,(既将1变成0,将0变成1)。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
3、补码
补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
求点赞👍 求关注❤️ 求分享👥