有目录,可自由选择。
- 取余符号%
取余符号是求余数,如5%2=1,17%6=5;
但是要注意的是参与取余的2个数都必须为整型数。
- 与符号&-按二进制位与
如:
#include<stdio.h>
int main()
{
int a = 3, b = 5;
int c = a & b;
printf("%d\n", c);
return 0;
}
与符号是将符号2边的数写成2进制,一一对齐,上下2个数&&,只有同真才为真;
a=3写成二进制是 00000000000000000000000000000011;
b=5写成二进制是 00000000000000000000000000000101;
2个数进行运算是 00000000000000000000000000000001;
得到二进制数1,二进制数1转换成十进制是1,所以输出结果是1;
总结:
以二进制形式进行运算,以十进制形式输出结果。
- 或符号|
或符号和与符号类似,都是以二进制形式进行运算,十进制输出。但|符号只有2假时才为假,其他情况为真;
a=3写成二进制是 00000000000000000000000000000011;
a=5写成二进制是 00000000000000000000000000000101;
进行或运算 00000000000000000000000000000111;
111换算成十进制是7,即输出结果为7;
- 异或符号^
进行异或运算时也是以二进制形式进行,异或运算的方法就是相同为0,相异为1;
a=3写成二进制是 00000000000000000000000000000011;
a=5写成二进制是 00000000000000000000000000000101;
进行异或运算 00000000000000000000000000000110;
110换算成十进制是6,即输出的结果为6;
- 右移操作符>>
#include<stdio.h>
int main()
{
int a = 8;
int c = a >>1;
printf("%d\n", c);
return 0;
}
右移操作符也是以二进制形式进行,a>>1,表示以二进制形式向右移动一位;
a=8的二进制表示是1000如图:
右操作符分为2种:
1.算数移位
右边丢弃,左边补原符号位;
2.逻辑移位
右边丢弃,左边补0;
不过一般计算机都采用算数移位,如上图,移位补位后得到的结果为100,转换成10进制是4;即输出结果为4;
要特别注意的是负数存储到内存中的是补码,要将原码换成补码后在进行移位,在这里不多讲,可以参考
6.左移操作符<<
左移操作符就是将二进制数向左移相应的位数,右边补0.
若a=8, c=a<<3;则移位后补0是1000000,转换成10进制是64.
此文章中涉及到较多关于二进制的问题,并没有详讲,可以参考
C语言二进制http://t.csdn.cn/UilQ8