【C语言极简自学笔记】重讲运算符

一、算术操作符

算术操作符 描述
+ 把两个操作数相加
- 第一个操作数减去第二个操作数
* 把两个操作数相乘
/ 分子除以分母
% 取模运算符,整除后的余数

注意: 1.除号的两端都是整数的时候执行的是整数的除法,两端只要有一个浮点数,就执行浮点数 的除法;

2.%取模两端必须为整数 。

二、移位操作符

1.左移位操作符<<

规则:左边抛弃,右边补0

由于在计算机中存储的数为二进制的补码,正数的原码、反码、补码均一致,负数的补码等于反码加一

则7的原码、补码、反码为:00000000000000000000000000000111

经过左移一位之后的结果为:000000000000000000000000000001110

即为十进制数14

若操作数为负数

-7的原码为:10000000000000000000000000000111

反码为:11111111111111111111111111111000

补码为:11111111111111111111111111111001

左移一位后的结果为:11111111111111111111111111110010

原码为:10000000000000000000000000001110,即十进制数-14

2.右移操作符>>

右移操作符分为两种①:算术移位:右边抛弃,左边补原值符号位

②:逻辑移位:右边抛弃,左边补0

一般编译器均为算术移位

-7的补码为:11111111111111111111111111111001

右移一位后的结果为:11111111111111111111111111111100

原码为:10000000000000000000000000000100,即十进制数-4

7的原码、补码、反码为:00000000000000000000000000000111

右移一位后的结果为: 00000000000000000000000000000011,即十进制数3

三、位操作符

位操作符主要分为三类:

&:按(二进制)位与

|:按(二进制)位或

^:按(二进制)位异或

注意❗❗❗:操作数均为整数

原理:通过存储在计算机中的二进制数进行按位操作,若操作数为正数,则直接输出其对应的数值;若操作数为负数,则求得其对应的原码所代表的数值后输出。

cs 复制代码
int main()
{
	int a = 3;
	//a的补码  00000000000000000000000000000011
	int b = -5;
	//b的原码  10000000000000000000000000000101
	//b的反码  11111111111111111111111111111010
	//b的补码  11111111111111111111111111111011
	int c = a & b;
	printf("c = %d\n",c);
	//a和b的补码按位与结果:00000000000000000000000000000011    即十进制数3
	int d = a | b;
	printf("d = %d\n", d);
	//a和b的补码按位或结果:11111111111111111111111111111011
	//反码为:11111111111111111111111111111010
	//原码为:10000000000000000000000000000101  即十进制数 -5
	int e = a ^ b;
	printf("e = %d\n", e);
	//a和b的补码按位异或结果:11111111111111111111111111111000
	//反码为:11111111111111111111111111110111
	//原码为:10000000000000000000000000001000   即十进制数 -8
	return 0;
}

四、赋值操作符

运算符 描述
= 赋值运算符,把右边操作数的值赋给左边操作数
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数
<<= 左移且赋值运算符
>>= 右移且赋值运算符
&= 按位与且赋值运算符
^= 按位异或且赋值运算符
|= 按位或且赋值运算符
相关推荐
暴躁小师兄数据学院1 分钟前
【AI大数据工程师特训笔记】第14讲:Linux操作系统与shell脚本
大数据·人工智能·笔记
QiLinkOS25 分钟前
《打破“用爱发电”:一种基于 Gitee 与时间戳的开源权益分配机制探索》
c语言·数据结构·c++·科技·算法·gitee·开源
土狗TuGou28 分钟前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
数据库·笔记·后端·sql·mysql·oracle
智者知已应修善业1 小时前
【51单片机用T0定时器方式1,实现0.5S的时间间隔实现第一次一个灯亮、第二次二个灯亮,直到全部灯亮,然后重复整个过程】2023-12-29
c++·经验分享·笔记·算法·51单片机
在繁华处1 小时前
Java从零到熟练(九):并发编程基础
java·开发语言
木头程序员1 小时前
SSM框架学习笔记
java·开发语言·mysql·spring·maven
一起逃去看海吧1 小时前
dify-03
java·linux·开发语言
社交怪人2 小时前
【范围判断】信息学奥赛一本通C语言解法(题号2052)
c语言
智者知已应修善业2 小时前
【51单片机4位静态数码管显示1234】2023-11-14
c++·经验分享·笔记·算法·51单片机
whyTeaFo2 小时前
MIT6.1810: xv6 book Chapter4: Traps and system calls 笔记
笔记