输出二进制内容
引用头文件
语法:
std::bitset<要显示的二进制位数>(要显示的变量);
#include
int a {0b10101010111110111111111111111};
std::cout<(a)
结果为
111111111111
int a {0b11111111};
a<<=4;
std::cout<(a);
a>>=4;
std::cout<(a);
结果为11110000
结果为00001111
知识扩展*:左移n位,就是乘以2^n,右移n位,就是除以2的n次方
第5行a输出结果可能为00001111,也可能为11111111,因为a是个负数,正数前面补0,负数前面补1
负数都以补码的形式存在
一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101是5的原码。
将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
比如称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,即后者也是前者的反码。
反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
更多描述请点击
有0为0,两1为1
作用:一般用来保留高位
例:
0x2833,想要保留0x28,可以将0x2833&0xff00
有1为1,两0为0
作用:一般升级到最大值
例
0x2833,想要将最高的两位调到FF,可以将0x2833|0xFF00
a^b=c
c^a=b
b^c=a
a
/ \
b----------c
这三者呈三角形关系
0^0=0
1^0=1
1^1=0
并且有A^0=A A^A=0
并且B^A^A=B 因为B^A^A=B^(A^A)=B^0=B
然后可以利用他来交换AB的值 只要这样
A^=B
B^=A
A^=B
具体算法可以参照
异或的本质