欢迎来到天天文库
浏览记录
ID:35294284
大小:18.21 KB
页数:4页
时间:2019-03-23
《c语言基础自学总结七位运算》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、C语言基础自学总结之七:位运算概念:意思是:位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6and11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。针对一个变量的某一位操作就称之位,位操作。一.位运算符要点:1.&:按为与2.
2、:按位或3.^:按位异或4.~:按位取反5.<<:左移6.>>:右移1.&:按位与例子1:#in
3、cludeintmain(void){printf("%d",5&3);//5按位与3,是1,就是每一位进行相与,与运算:与上0还是0,1与上1为1,0与上1为0,用的是补码相与,printf("%d",5&-3);//是补码的相与return0;}2.|:按位或例子1:#includeintmain(void){printf("%d",5
4、3);//或运算就是对数字的每一个进行或运算,或运算:每一位只要有一个1就是1,都是0时才为0,同样是补码运算。return0;}3
5、.^:按位异或例子1:#includeintmain(void){printf("%d",5^3);//异或每一位进行异或,相同为假,不同为真。还是补码进行异或,return0;}4.~:按位取反例子1:#includeintmain(void){printf("%d",5~3);//进行每一位取反,还是补码取反return0;}5.<<:左移例子1:#includeintmain(void){printf("%d",5<<1);//就是把”<<前面数字
6、“每一位向左边移“<<后边数字“的位数,也就把“5”的每一位,相左边整体移1位,最后超出范围的舍去,不够的补0,左移1位相当于乘以2,左移2位是乘以4,左移n位相当于是乘以2的n次方return0;}5.>>:右移例子1:#includeintmain(void){printf("%d",5>>1);//右移的方式移左移一样,超出范围的舍去,不够的正数补0,负数补1,正数右移n位相当于除以2的n次方,但是在不同的系统下,结果不一样。return0;}二.位操作要点:1、如果相求a的第n位(从0位起
7、)是1还是0,就用a与上1左移n位,如果等于1第那位就上1,若果等0第n位就是0,a&=1<intmain(void){inta=1;a
8、=1<<2;//把a的第2位变成1printf("%d",a);a&=~(1<<2)
9、;//把a的第2位变成0printf("%d",a);a^=a<<2;//把a的第2位取反printf("%d",a);if(a&=a<<2){printf("a的第二位是1");}else{printf("a的第二位是0");}//判断a的第二位是1还是0return0;}
此文档下载收益归作者所有