用cpp实现:给定一个十进制数,判断其二进制首位是否为1
时间: 2024-02-25 13:56:58 浏览: 82
以下是用 C++ 实现的代码:
```cpp
#include <iostream>
using namespace std;
bool is_first_bit_one(int num) {
int bit_num = 0;
while (num > 0) {
num >>= 1; // 每次右移1位
bit_num++;
}
return (num << (bit_num - 1)) & 1; // 判断最高位是否为1
}
int main() {
int num = 12;
if (is_first_bit_one(num)) {
cout << "二进制首位为1" << endl;
} else {
cout << "二进制首位不为1" << endl;
}
return 0;
}
```
在 `is_first_bit_one` 函数中,首先使用循环将十进制数转化为二进制数(即不断右移1位,直到二进制数的位数),然后将该数左移到最高位,再与1进行按位与运算,判断最高位是否为1。
使用示例:
```cpp
int num = 12;
if (is_first_bit_one(num)) {
cout << "二进制首位为1" << endl;
} else {
cout << "二进制首位不为1" << endl;
}
```
输出结果:
```
二进制首位不为1
```
需要注意的是,由于右移操作可能会将符号位也一起右移,因此在处理负数时需要注意。如果需要判断负数的情况,可以将输入的数强制转化为 `unsigned int` 类型再进行处理。
阅读全文