bit位相关操作
置1
单bit操作:
例如对181即1011 0101的bit5进行置1操作:
首先,1u<<5,即0000 0001进行左移5位,得到0010 0000
然后1011 0101 | 0010 0000
结论:要想将某个数的bitN置1,即将1左移N位,然后与此数相或
多bit操作:
先清0,再或
例如将181的bit2~bit4写1,那先把1011 0101 的bit2 ~ bit4清0,即1011 0101 & (0x7<<2),然后再 | (0x7<<2)
清0
单bit操作:
例如对181即1011 0101的bit5进行清0操作:
同样的,1u<<5,即0000 0001进行左移5位,得到0010 0000
然后对1u<<5 取反,即~(1u<<5),得到1101 1111
1011 0101 & 1101 1111
要想将某个数的bitN清0,即将1左移N位之后再全部取反,再与此数相与
多bit位操作:
例如对181的bit2~bit4进行清0:
首先bit2~bit4是3位,7=0x0000 0111,我们将7左移2位,得到0001 1100
然后对(7<<2)取反,即1110 0011
最后1011 0101 & 1110 0011
读取
单bit操作:
例如对181即1011 0101的bit5进行判断,看是否为1:
首先 1u<<5,即0000 0001进行左移5位,得到0010 0000
然后1011 0101 & 0010 0000,若bit5为真,则原数的Bit5为1,否则为假。
多bit操作:
例如对181读取它的bit2~bit4:
181即1011 0101,将其右移2位,得到0010 1101,然后再与上0000 0111