本人0基础开始学编程,我能学会的,你也一定可以,学会多少写多少。
下载安装请从官网入手,社区版本即可,这里主要使用的软件是VS2019,图标如下。
上一篇:从0开始学c语言-过渡-函数递归、循环语句、数组练习_阿秋的阿秋不是阿秋的博客-CSDN博客
在开始之前,希望大家先看看我之前写的操作符文章,这里给上链接。(因为有重复的内容,细节可能不会在这里提及。)
从0开始学c语言-07-认识一下操作符、原码和反码和补码_阿秋的阿秋不是阿秋的博客-CSDN博客
目录
操作符
1·算数操作符
+ - * / % |
从0开始学c语言-07-认识一下操作符、原码和反码和补码_阿秋的阿秋不是阿秋的博客-CSDN博客
详细的看上面那篇文章,这里只给上结论。
1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。
2·移位操作符
<< 左移 | >> 右移 |
移位操作符的操作数只能是整数(不能<<2.3),我们这里所指的移动是移动补码的二进制位!!!
详细解释看从0开始学c语言-07-认识一下操作符、原码和反码和补码_阿秋的阿秋不是阿秋的博客-CSDN博客
左移操作符
左移原则:左边不要,右边补0
右移操作符
右移分为两种:
2. 算术移位:左边用原该值的符号位填充,右边丢弃
计算机系统中的右移以算术移位为主。
对于移位运算符,不要移动负数位,这个是标准未定义的。
例如:
int aqiu = 10;
num>>-1; //这是不可以的哦!
补充
变量b储存a变量移位后的结果,a本身不会改变。
我们把移位放在判断条件中,可以看到a本身依旧不会改变。
3·位操作符
&:按位与(有0为0)
| :按位或(有1为1)
^:按位异或(相同为0,不同为1)
注意:
1.和移位运算符一样,他们的操作数也必须是整数。也就是说不能&2.3
2.和移位运算符一样,位操作符也是对补码进行操作。
3·和移位运算符一样,别的变量储存它按位后的结果或者放在判断条件中,它本身不变。
练习1
不创建第三个变量,交换两个变量的值。
第一种写法
int main()
{
int a = 3;
int b = 5;
printf("a=%d,b=%d", a, b);
a = b - a;
b = b - a;
a = a + b;
printf("a=%d,b=%d", a, b);
return 0;
}
这样虽然可以,但是如果a和b都很大的话会溢出。
第二种写法
int main()
{
int a = 3;
int b = 5;
printf("a=%d,b=%d", a, b);
//异或的结果同原来的其中一个值异或能得到另外一个值
a = b ^ a;
//这个a相当于密码
b = b ^ a;
//b去异或这个密码就能得到a,相当于b=b^b^a,b^b=0,0^a=a,b=a
a = a ^ b;
//a去异或这个密码就能得到b
printf("a=%d,b=%d", a, b);
//用ab异或的结果可以知道ab哪些位不同,然后用a与结果异或,相同保留不同取异得到b
return 0;
}
异或的结论
1· 任何两个相同的数 异或 为0
2· 0和任何数字 异或 是它本身
练习2
求一个整数储存在内存中的二进制1的个数
思路:一个数和1按位与的话,只有它也为1才能得到1。然后不断右移这个数,验证有多少个1。</