java学习笔记之位运算符

时间:2023-03-08 17:32:50

  java的位运算符主要针对二进制数的位进行逻辑运算,主要包括以下几种的位运算符

  1、与运算符(&)

    与运算符的使用规律是两个操作数中位为1的时候结果为1,否则都是0,例如  3&5=1

    3对应的二进制数是0011       5对应的二进制数是0101,所以根据与运算的规则,3&5得出的结果是0001,转换成十进制就是1

  2、或运算符(|)

    或运算符的的使用规则是两个位中只要任意一个里面有一,那么结果为1,也就是说只有当两个位都为0的时候结果才为0,例如 3|5=7

    根据或运算符的规则,3|5的记过是0111,转换成十进制就是 7

  3、非运算符(~)

    非运算符是针对一个数进行操作的,它的使用规则是将一个数的二进制数全部取反,0变成1,1变成0,例如 ~5=-6

    5对应二进制数是0101,因为计算机内部表示数的字节单位是定长的,如8、16、32 位,不够的0补位。所以5对应的二进制数应该是 0000 0101,

    ~5 = 1111 1010,最高是符号位,所以1111 1010代表的是个负数,先将1111 1010 减1 变成1111 1001 ,再取反变成 0000 0110=6,所以~5=-6

  4、异或运算符(^)

    异或运算符的使用规则是两个操作数的位中,相同为0,不同为1,所以3(0010)^5(0101)=7(0111)

  5、左移运算符(<<)

    左移运算符是针对一个数进行操作的,运算规则是将一个数的二进制数整体向左移,末尾用0补上,所以     5 << 1 = 10    5 << 2 = 20

    5对应的二进制是0101,左移一位就变成了 1010=10 左移两位就变成了  0001 0100 = 20,所以左移多少位就是把原来的数乘以2的多少次方

  6、右移运算符(>>)

    右运算符与左运算符相反,是将一个数的二进制数整体右移,例如   5>>1 = 2,5对应的二进制数是0101,右移一位就变成了0010=2,当数的本身小于2的n次方的时候,右移n位结果都是0,例如5<2*2*2,所以5 >>3 = 0

  7、又移运算符(>>>)

    >>>运算符和>>的使用规则基本一样,但是>>>运算符左后最高位都是用0标识