X & Y
把X和Y做位元and運算
同x&0X01~
x&0X01就是把x和1做位元and運算,像是如果是19&0x01就會是10011 AND 00001 答案就會是1
X>>=1
x>>1的意思是把x的二進位表示右移一位 像是19的二進位是10011 右移一位就變成1001 也就是9
可以觀察到x=x>>1和x=x/2基本上是等價的(看看二進位表示就知道了)
二進制函式裡面的x>>1可以直接看成x/2 x&0x01可以直接看成x%2 這樣就滿明顯了
然後
在C/C++中以0x當前綴寫數字會被當成十六進位表示 像是0x13就等同於19 所以0x01跟1實際上是同一個數字