java运算符,按位与,按位或,异或,自移运算符

it2022-05-05  179

运算符

  今天啃遗传算法时看见了一些比较诡异的运算符操作(好吧,是当初没有好好学),稍微总结一下

&(按位与)     按位与的运算规则是将两边的数转换为二进制位,然后运算最终值,运算规则即(两个为真才为真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0     示例: 4&5 0000 0100 0000 0101 0000 0100 十进制结果为4 |(按位或)     按位或和&按位与计算方式都是转换二进制再计算,不同的是运算规则(一个为真即为真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1     示例: 4|5 0000 0100 0000 0101 0000 0101 十进制结果为5 ^(异或)     即相同取0不同取1,运算规则为1^ 0 = 1 , 1^ 1 = 0 , 0^ 1 = 1 , 0^0 = 0     示例: 4^5 0000 0100 0000 0101 0000 0001 十进制结果为1

<<

    左移运算符,x<<y,即将x换成二进制左移y位     示例:

4<<1 0000 0100 0000 1000 二进制结果8

>>

    右移运算符,x>>y,即将x换成二进制右移y位,最高位符号与原数字一致     示例:

4>>1 0000 0100 0000 0010 二进制结果为2 -4>>1(负数的二进制表示,为正数的二进制取反+1) 4 0000 0100 -4 1111 1100 1111 1110(负数二进制转十进制,将符号为以外取反加一 000 0010=2,加上符号-就可以了) 十进制结果-2

>>=

    这个有点诡异,一开始真没看出来,直到想起了+=这个符号。。。x>>=y可以看成x=(x>>y),即将x>>y的值赋给x。。。

<<=

    同上

(妈呀,表单居然做了防注入,符号非法,我终于知道为什么搜不到>>=,<<=这两个符号了)


最新回复(0)