按位与(&)
通常用于二进制的取位操作。相同位的两个数字都为1,则为1;若有一个不为1,则为0.
例如一个数&1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,最末位为1表示该数为奇数。
按位或(|)
相同位只要一个为1即为1。通常用于二进制特定位上的无条件赋值,例如一个数|1的结果就是把二进制最末位强行变成1.如果需要把二进制最末位变成0,对这个数|1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。
按位异或(^)
相同位不同则为1,相同则为0。
两次异或同一个数最后结果不变,即(a^ b)^ b=a;
按位取反(~)
not运算的定义是把内存中的0和1全部取反。
移位运算符
(1)移位运算符组成的表达式也属于算数表达式,其值为算数值。
(2)左移运算符是将一个二进制的操作数按指定移动的位数向左移动,移出位被丢弃,右边移出的空位一律补0.右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移除位被丢弃,左边移出的空位一律补0,或者补符号位。
(3)在移位运算时,byte、short和char类型移位后的结果会变成int类型,规定实际移动的次数是移动次数和32的余数,也就是移位33词和移位1次得到的结果相同。
注意:如果是负数,在左侧填充的值就是1而不是0
(4)负数的二进制:
- 取负数的绝对值,将其转化成二进制字节形式。
- 将源码取反(0的变成1,1的变成0),得到反码
- 反码加一得到补码。补码就是负数在计算机中的二进制表示方法。
来源:CSDN
作者:q1559951849
链接:https://blog.csdn.net/q1559951849/article/details/103838077