操作符
分类:
算术操作符
+ - * / %
1. 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。2. 对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就
是浮点数除法。
3. %操作符的两个操作数必须为整数。返回的是整除之后的余数。
移位操作符
<< 左移操作符>> 右移操作符
左移操作符
移位规则:
左边抛弃、右边补0
右移操作符
移位规则:
首先右移运算分两种:
1. 算术移位
左边用原该值的符号位填充,右边丢弃
2. 逻辑移位
左边用0填充,右边丢弃
例1:求一个整数存储在内存中的二进制中1的个数。
代码如下:
#include<stdio.h>
#include<stdlib.h>
//方法1
int main()
{
int num = 10;
int count = 0;//计数
while (num)
{
if (num % 2 == 1)
count++;
num = num / 2;
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}
//思考这样的实现方式有没有问题?
//方法2:
int main()
{
int num = -1;
int i = 0;
int count = 0;//计数
for (i = 0; i<32; i++)
{
if (((num >> i) & 1) == 1)
count++;
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}
//思考还能不能更加优化,这里必须循环32次的。
//方法3:
int main()
{
int num = -1;
int i = 0;
int count = 0;//计数
while (num)
{
count++;
num = num&(num - 1);
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}