小小的预备知识
1、>> 右移。 如果一个二进制数右移1位,则最右边的那一位,也就是最后一位就会被丢掉,但是同时倒数第二位就会变成最后一位。以此类推,右移2位、3位,可以理解为二进制数的倒数第3位,倒数第4位被移到了末位。 例如,我们在对十进制5进行“>>”时,即“5 >> 3”时,我们可把5看为“0101”,即位运算为“0101 >> 2”,结果为“0001”,即在前端补0的同时,倒数第3位的1被移到末位去了。
2、& 与运算 如果我们有一个二进制数,我们要得到它的末位数,该怎么办呢。其实只要&1就行了。 0&1 = 0,1&1=1,1&0=0,0&0=0可见一个二进制位和&1,都会保留自己原来数值,&0则都会被化为0哦 5&1=0101 & 0001,答案为1;4&1 = 0100 & 1,答案为0。 拓展一下,如果想要得到最后两位二进制位,那应该 &3 。 6&3=0110&0011,答案为2,即“10”;
代码模板
#include
#include
using namespace std;
/*
该代码输出了从0到15的二进制数
*/
int main(void)
{
int n = 0;
for(int j = 0;j = 0;i --) //注意是3到0,这个在纸上画画很显然
cout i & 1); //第i + 1位的那一位被移动到末尾,然后被保留了下来。
cout 结果也一样是十进制整数。
|