c语言初学者练习——操作符(算术操作符与移位操作符)

c语言初学者练习——操作符(算术操作符与移位操作符)

声明

本文章记录的是本人学习网课过程中跟随网课写的算术操作符与移位操作符笔记,是为了记录本次学习,有任何纰漏烦请各位见谅

一、算术操作符

1.介绍

顾名思义算术操作符主要是用来进行加、减、乘、取模、取余等算术运算,常见的操作符有(+、-、*、/、%),%计算的是整除后的余数以下是简单的代码展示:

int x = 7 % 2;
int y = 7 / 2;
int z = 7 - 2;
int w = 7 * 2;
int p = 7 + 2;
printf("%d %d %d %d %d", x,y,z,w,p);

运行结果:
在这里插入图片描述

2.注意事项

算术运算符的运算与数学中的相差不大,但需注意使用/时如果是整形除法则结果取整,如果为浮点型除法则相除的两个变量中必须有有一个及以上为浮点型否则结果仍为整形,同时应定义变量为浮点型否则结果仍为整形
以下为代码示范

double x = 0;
x = 1.0 / 2.0;
printf("%lf", x);

运行结果

0.500000

(1)浮点型除法则相除的两个变量中必须有有一个及以上为浮点型否则结果仍为整形

double x = 0;
x = 1 / 2;
printf("%d", x);

运行结果

0

(2)应定义变量为浮点型否则结果仍为整形

int x = 0;
x = 1.0 / 2.0;
printf("%d", x);

运行结果

0

(3)取模操作符%两端必须为整数
在这里插入图片描述

二、移位操作符(<< >>)

1.介绍

移位操作符分为左移操作符(<<)和右移操作符(>>),他们都是通过移动二进制来实现的。
**注意:**移位操作符仅针对整型

2.进制

我们生活中常见的数字及使用的都是十进制的例如数字 13 ,而它还有其他的进制表示常见的有2进制、8进制、10进制、16进制等具体如何转换我就不过多介绍,b站等视频网站有很多的视频介绍大家感兴趣可以去看看,这里我们讲为左移操作符和右移操作符都是通过移动二进制而整数的二进制表示有三种:原码、反码和补码****正的整数原码、反码和补码相同的整数原码、反码和补码需要计算
注意 : int为四字节,有三十二给比特位,其中最高位为符号位(1表示正数,0表示负数)
例如 7和负7的原码、反码和补码
在这里插入图片描述
关于负数原码、反码和补码的计算
原码~反码:原码的符号位不变其他位依次取反
反码~补码:反码加一为补码

3.移位操作符的运算

注意 整数在内存中储存的是补码,以原码展示,移位操作符移动的是补码

(1)左移操作符

简单来说就是左边丢弃右边补零
例如7的左移操作符
代码示例

    int a = 7;
	int b = a << 1;
	printf("a=%d\n", a);
	printf("b=%d\n", b);
	return 0;

结果为

移位操作符对原变量(a)不改变
具体移动展示
移动
而左移操作符对于-7就要更加复杂了
代码示例

     int a = -7;
	int b = a << 1;
	printf("a=%d\n", a);
	printf("b=%d\n", b);
	return 0;

结果为
在这里插入图片描述
具体移动展示
在这里插入图片描述
通过以上示例可以看出左移操作符疑似有乘2的效果

(2)右移操作符

与左移操作符相似右边丢弃左边补,但补1还是0会对符号造成影响因此
右移操作符分为算术移位和逻辑移位
**算术移位:**右边丢弃左边补原符号
**逻辑移位:**右边丢弃左边补0
具体使用算术移位还是逻辑移位取决于具体的编译器,而大多数的编译器使用的是算术移位
在vs2022中代码示例

    int a = -7;
	int b = a >> 1;
	printf("a=%d\n", a);
	printf("b=%d\n", b);
	return 0;

结果为
在这里插入图片描述
具体移动与左移操作符相似便不再赘述
最后还有一个注意事项移动不能为负数 移动为负数时这种行为为标准未定义,编译器可能会按照自己的理解去处理😂

最后

写的可能不是很好大家见谅,加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值