在 C++ 中使用交替位表示的二進位制數
假設我們有一個正整數,我們需要檢查它是否有交替位 - 即,兩個相鄰的位總是有不同的值。
因此,如果輸入是 10,則輸出將為 True,因為 10 的二進位制表示形式為 1010。
要解決這個問題,我們將遵循以下步驟 -
- p := n AND 1
- if n < 2, then −
- 返回 true
- n := n/2
- while n 非零,執行 -
- c := n AND 1
- if c XOR p 與 0 相同,則 -
- 返回 false
- p := c
- n := n/2
- 返回 true
讓我們看看以下實現,以便更好地理解 -
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool hasAlternatingBits(int n) {
bool p=n&1;
bool c;
if(n<2)
return true;
n>>=1;
while(n){
c=n&1;
if(c^p==0)
return false;
p=c;
n>>=1;
}
return true;
}
};
main(){
Solution ob;
cout << (ob.hasAlternatingBits(10));
}輸入
10
輸出
1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP