单独使用
包括:与,或,异或,按位取反,左移,算数右移,逻辑右移
JAVA 十进制转二进制:String.valueOf( Integer.toBinaryString(int n) );
二进制 0b 开头0b0010 == 2
;八进制 0 开头0010 == 8
, 十六进制 0x 开头0x0010 == 16
注意:优先级问题:
()
>~, -
>/, *, %
>-, +
><<, >> >>>
>&
>^
>|
>= , +=, -=, *=
与 &
a . a . a.任何位上的数与 0 都为 0 :1 & 0 = 0
b . b . b. 奇数偶数:奇数 1 == n & 1
;偶数 0 == n & 1
c . c . c. 对数 x 模 2 的 n n n 次方 所得到的数:x%(2<<n) == x & ((2 << n) - 1)
例如下面的例子:
10 % 4 =10 & 3=> 101 0 2 1010_2 10102 & 001 1 2 0011_2 00112 = 001 0 2 0010_2 00102 = 2
d . d . d. 返回 n 的二进制位 中 最后一位 1 1 1 的所代表的数:lowbit(n) = n & -n
应用:判断一个正数是不是2的幂(方法1): lowbit(n) == n
例如下面的例子:
01001 0 2 010010_2 0100102 = ~n => 10110 1 2 101101_2 1011012 = -n=~n+1 => 10111 0 2 101110_2 1011102 (得到 其 相反数)
= n & -n => 010010 010010 010010 & 10111 0 2 101110_2 1011102 = 00001 0 2 000010_2 0000102 = 2 2 2<