二进制储存状态:
假设有1e9个灯,要记录其开或关的状态。用数组肯定爆空间了(1e9个int,就是1e9*4个字节),此时可以用1e8个二进制位为10位的数来储存状态(2^10=1024,一个int就可以存下,最终是1e8*4个字节的空间),每个二进制位为1或0表示开或关。
二进制运算:
C/C++中直接表示二进制(其他进制):
在C/C++ 中天然的支持除10进制之外的三种进制的表示, 其前缀分别为:
二进制 : 0b
八进制 : 0
十六进制 : 0x
1.二进制
例: int x = 0b1001; // x = 9
2.八进制
例:int y = 074; // x = 60
3.十六进制
例: int z = 0xa3; // x = 163;
除此之外在char类型字符的表示时也可以用 8进制数 或 16进制数,
例: char A = ‘\101’ 这里 以\开头表述其后为八进制数 最终 ‘\101’ == 65 == ‘A’
例: char B = ‘\x42’ 这里 以\x开头表述其后为十六进制数 最终 ‘\x42’ == 66 == ‘B’
转换二进制:
将10进制数转换为2进制:
void Binarycout(int n)
{
//32位
for(int i = 31; i>= 0; i--)
{
cout<<((n>>i)&1);
}
cout<<endl;
}