- & 按位与
1 & 3的结果为1
来看看它的怎么运行的:
1的二进制表示为 0 0 0 0 0 0 1
3的二进制表示为 0 0 0 0 0 1 1
根据 & 的规则 得到的结果为 0 0 0 0 0 0 0 1,十进制表示就是1 - |按位或
1 | 3 的结果为3 - ^按位异或
^运算符跟 | 类似,但有一点不同的是 如果两个操作位都为1的话,结果产生0 - ~取反
~是对位求反 1变0, 0变1 - 左移<<和右移>>
运算符 | 含义 |
---|---|
<< | 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) |
>> | "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. |
– | – |
<< 向左移动 而 >> 向右移动,超过的位将丢失,而空出的位则补0
如 0 1 0 0 0 0 1 1(十进制67) 向左移动两位67<<2将变成
0 0 0 0 1 1 0 0 (十进制12)
当然如果你用java代码写,由于是32位,不会溢出,结果是268
向右移动两位67>>2则是
0 0 0 1 0 0 0 0(十进制16)
任何小数 把它 >> 0可以取整
如3.14159 >> 0 = 3;