利用位運算將整型值的二進位制位模式從左到右變換

2021-10-04 00:09:24 字數 641 閱讀 4794

目標

編寫函式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取反 得到倒數第...