#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; }