C/C++對位操作有如下方法:
<1>位操作運算符(注意:下面幾個運算符不改變原來的變量的值,只是獲得運算的結果即一個新值)
<2>位字段
如下C++代碼:
a: b: c: d:
位字段由一個結構聲明,該結構聲明為每個字段提供標簽,並決定標簽字段的寬度.
上面的使用unsigned int作為位字段結構的基本布局單元,因此即使一個結構只有一個一位的成員字段,該結構也和一個unsigned int的大小相同,上面用sizeof看為8,機器sizeof(unsigned int)為4,若把最後一個改為d:20,則本機器的sizeof剛好為4.
另外,十六進制前面加 0x,八進制前加 0
-------------------------------------------------------------------------------------------------------------------------------------------------------
一:寫一個函數,返回將給定數字的後給定位數反轉,即0變1,1變0
思路:
~是將整個數的全部位取反了,不合適.用異或^,把給定值和一個後面幾位全部是1前面剩下的都是0的數^,即可.
關鍵是怎麼獲得那個後面幾位全是1的數?
#include <iostream> invert_end( num, bits) mask=; temp=; (bits>=mask|temp; temp=temp<<; bits-- num^mask; main(<<()<<<<>> res=invert_end(val,<<val<< <<