输出二进制,要引用头文件bitset
头文件
std::bitset<要显示的位数>(变量)
左移运算<<
,相当于乘
2
n
2^n
2n
左边多了删除,右边不够补零。
右移运算>>
,相当于除
2
n
2^n
2n
右边多的删除 ,左边不够的补零(如果带符号的被零,不带符号的可能补零或补一,正数补零,负数补一)
求取运算符~
,零变1,1变零
位与运算&
同一则一,否则则零,用于保留某位
位或运算|
,有1则1,否则为0
位异或运算^
,相同为0,不同为1
例如
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
int a{ 0b0111111 };
cout << "十进制显示a:";
cout << a << endl;
cout << "二进制显示a:";
cout << bitset<16>(a) << endl;
a <<= 3;
cout << "左移3次十进制显示a:" << a << endl;
cout << "左移3次二进制显示a:" << bitset<16>(a) << endl;
unsigned int b{ unsigned(a) };
cout << "十进制显示b:" << b << endl;
cout << "二进制显示b:" << bitset<16>(b) << endl;
b >>= 4;
cout << "右移4次十进制显示b:" << b << endl;
cout << "右移4次二进制显示b:" << bitset<16>(b) << endl;
a >>= 4;
cout << "右移4次十进制显示a:" << a << endl;
cout << "右移4次二进制显示a:" << bitset<16>(a) << endl;
int c{ -100 };
cout << "c的二进制:" << bitset<16>(c) << endl;
b = c;
b >> 2;
cout << "左移两次二进制显示:" << bitset<16>(b) << endl;
cout << "~b为:" << bitset<16>(~b) << endl;
c = 0x1234;
cout << "保存c的12位:" << hex << (c & 0xff00) << endl;
cout << "将c的34变为ff:" << hex << (c | 0x00ff) << endl;
}
结果如下