#include <stdio.h>
int a,ch='9';
void _1()//&的测试
{
for(int j=0;j<20;j++)
{
printf("%d&i(i从0~19):",j);
for(int i=0;i<20;i++){
if(i&j) printf("%d ",i);//一般的运用有:(a&1)->等同于a%2==1(但更快)其他的用法,看运行结果探索规律吧(用八位二进制找原理)
}
printf("\n");
}
printf("\n");
}
void _2()//|的测试
{
printf("(i&6)|(i&2)(i从0~19):");
for(int i=0;i<20;i++){
if((i&6)|(i&2)) printf("%d ",i);//博主目前不知道该用于啥,同&一样找规律和原理
}
printf("\n\n");
}
void _3()//^的测试
{
printf("(i&6)^(i&2)(i从0~19):");
for(int i=0;i<20;i++){
if((i&6)^(i&2)) printf("%d ",i);
}
printf("\n\n");
printf("^(ch='5'的字符):");
if(a=ch^'0') printf("%d ",a);//将字符型0~9转化为整数型0~9,也可以用ch^48,因为字符'0'在ASCII中对应的十进制为48
printf("\n\n");
}/*注:获取字符对应的ASCii直接用整型%d输出就可以了*/
void _4()//<<的测试
{
printf("i<<=1(i从0~19):");
for(int i=0;i<20;i=a,i++){
a=i;
if(i<<=1) printf("%d ",i); //i<<=m相当于i*m,但是运行的更快
}
printf("\n\n");
}
void _5()//>>的测试
{
printf("i>>=1(i从0~19):");
for(int i=0;i<20;i=a,i++){
a=i;
if(i>>=1) printf("%d ",i); //i<<=m相当于i/m,但是运行的更快
}
printf("\n\n");
}
int main()
{
_1();
_2();
_3();
_4();
_5();
return 0;
}