算术操作符
#include<stdio.h>
int main()
{
int a = 5 / 2;//商2余数1
int a = 5 % 2;//%的结果是余数1
printf("a = %d\n", a);
return 0;
}
移位操作符 原码 反码 和补码
右移操作符 算术右移 右边丢弃,左边补原符号位,1表示负数
0表示正数
左移操作符 左边丢弃,右边补0
注意:它们的操作数必须都是整数
#include<stdio.h>
int main()
{
int a = -1;
//整数的二进制表示有:原码,反码,补码
//存储到内存的是补码
//整数的原码 = 反码 = 补码
//1000 0000 0000 0000 0000 0000 0000 0001 ---原码
//1111 1111 1111 1111 1111 1111 1111 1110 ---反码
//1111 1111 1111 1111 1111 1111 1111 1111 ---补码
int b = a >> 1;//这里是指将a的二进制位向右移动一个,也就是将补码移动一个
//1111 1111 1111 1111 1111 1111 1111 1111--- 补码 移动完了之后的
//1111 1111 1111 1111 1111 1111 1111 1110--- 反码
//1000 0000 0000 0000 0000 0000 0000 0001 --- 原码
int c = 5;
//0000 0000 0000 0000 0000 0000 0000 0101 --原码 反码 补码相同
//0000 0000 0000 0000 0000 0000 0000 1010 左移动之后十进制是10
int d = c << 1;
printf("d==%d\n", d);
printf("b =%d\n", b);
return 0;
}
位操作符
二进制 位操作符
& 按位与
| 按位或
^ 按位异或
注意:它们的操作数必须都是整数
&按二进制 位与 二进制位相比较,只要有一个是0那么都是0
按位与 &
#include<stdio.h>
int main()
{
//&按位与 二进制位相比