在 C++ 中翻轉位
假設我們有一個無符號數 x,並且可以輕鬆地找出它的二進位制表示(32 位無符號整數)。我們的任務是反轉這些位。因此,如果二進位制表示為 00000000000000000000001001110100,則反轉的位將為 00101110010000000000000000000000。所以我們要在反轉位之後返回實際的數字
為了解決這個問題,我們將遵循以下步驟:-
- 假設 n 是給定的數字
- 讓 answer := 0
- 對於 i := 31 到 0
- answer := answer OR (n AND i),並將其向左移動 i 次
- 將 n 右移 1 位後,將其設為 n
- 返回 answer
示例
讓我們看看以下實現,以獲得更好的理解:-
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t ans = 0;
for(int i = 31; i >= 0; i--){
ans |= (n & 1) <<i;
n>>=1;
}
return ans;
}
};
main(){
Solution ob;
cout << ob.reverseBits(0b00000000000000000000001001110100);
}輸入
0b00000000000000000000001001110100
輸出
775946240
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
html
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP