目录
操作符分类
一、算术操作符
+ - * / %
/:两个整数相除结果取整,例如3/2 = 1, 要想得到小数相除的两个数至少要有一个是小数
%:取模操作符的两个操作数必须是整数
二、移位操作符
<<:左移操作符,将操作数的二进制位向左移动一位,左边的值丢弃,右端补0
>>:右移操作符,将操作数的二进制位向右移动一位,有两种移动规则
1.算术右移:右边的值丢弃,左边补上原来的符号位,常用算术右移
2.逻辑右移:右边的值丢弃,左边补0
三、位操作符
&:按位与,按操作数的二进制位相与,都为真则为真
|:按位或,按操作数的二进制位相或,有一个为真则为真
^:按位异或,按操作数的二进制位异或,真假互异才为真
位操作符操作的必须为整数
位操作符可以实现一些比较神奇的功能:
1.计算整数对应二进制中1的个数
//计算整数对应二进制中1的个数
int main()
{
int a = 0;//要计算的整数
int i = 0;//对位数计数
int b = 0;//表示这一位上是0还是1
int ret = 0;//存储结果
scanf("%d", &a);
for (i = 0; i < 32; i++)
{
b = a & 1;
a = a >> 1;
ret += b;
}
printf("%d\n", ret);
return 0;
}
2.改变二进制数中某一位的值
//将倒数第5个二进制位由0变为1
int main()
{
int a = 10;
//a的二进制:00000000000000000000000000001010
a = a | (1 << 4);
//00000000000000000000000000001010
//00000000000000000000000000010000
//相或
//00000000000000000000000000011010
printf("%d\n", a);//输出26
return 0;
}
//将倒数第5个二进制位由0变为1
i