目標:
編寫函式unsigned int reverse_bits( unsigned int value );
此函式的返回值是把value的二進位制位模式從左到右變換一下的值。
例如,在32位機器上,25這個值包括下列各位:
00000000000000000000000000011001
函式的返回值應為2550136832,它的二進位制位模式為:
10011000000000000000000000000000
編寫的函式應不依賴於不同機器上整型值的長度
思路:
設answer為所求值,初值為0
判斷value的最後一位是否為1,若為1,answer的最後一位變為1
value不斷進行右移位
利用乙個位在乙個無符號整形中進行移位來控制迴圈,answer跟隨此位進行左移以達到不依賴於不同機器上整型值的長度
**:
unsigned
intreverse_bits
(unsigned
int value )
return answer;
}
二進位制位運算
與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...
二進位制位運算
一 按位與 位全為1,結果才為1 0 0 0 0 1 0 1 0 0 1 1 1 特殊用法 清零。如果想將乙個單元清零,就是使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零 取乙個數中的指定位。如x 10101110要取x的低4位,用x 00001111 00001110即可 二 按...
位運算 顛倒二進位制位
a代表某字串 a b 異或 相同為0,不同為1 若b是一串0,則a b a,a b 0 a a 0 若b是一串1,則a b a,相當於把a取反,a b a a a a 利用x x 0,可以將三個數中重複的兩個數去掉 n 相當於無符號右移,左邊會補上0 獲取11111111,只需要把0取反 得到倒數第...