为什么 bool 显示正确的位顺序,而直接输出移位运算结果却不显示?
Why bool shows the correct bit order while outputting the shift operation result directly doesn't?
我正在做一个任务,要求我以二进制形式表示一个数字。我确实知道基本的想法,所以我实现了这样的东西。
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
int main()
{
int n;
cin>>n;
for(int i=31;i>=0;i--){
cout<<(n&(1<<i));
}
return 0;
}
当 n=6 时,输出00000000000000000000000000000420。
但是我将我的代码更改为此
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
int main()
{
int n;
cin>>n;
for(int i=31;i>=0;i--){
bool a=(n&(1<<i));
cout<<a;
}
return 0;
}
一切都很好。给出 n=6 的输出00000000000000000000000000000110。
谁能告诉我第一个代码有什么问题?
考虑一下这个数字代表什么。
6 = 110
4 = 100
2 = 010
您正确地屏蔽了每个位,但这些操作的结果是整数。当您输出它们时,它将打印 2 的幂,而不是 1 和 0。
布尔类型强制将值强制为 true(非零(或 false(零(,在输出时变为 1 或 0。
您需要按循环计数右移,以避免转换为布尔值或使用三元。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用C++中的模板和运算符重载执行矩阵运算
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- GCC本机矩阵运算库
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- 位阵列上的快速AND运算
- 字符串中int的加法运算
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 为什么 bool 显示正确的位顺序,而直接输出移位运算结果却不显示?