【C语言基础学习笔记】五、操作符详解(1)(详细讲解+代码举例+练习巩固)

本文详细介绍了C语言中的算术操作符、移位操作符和位操作符。算术操作符包括加、减、乘、除和取余;移位操作符分为左移和右移,右移分为算术移位和逻辑移位;位操作符涉及按位与、按位或和按位异或。文中通过实例和练习巩固了这些概念,并特别强调了移位和位操作符对负数和整数的处理方式。
摘要由CSDN通过智能技术生成

有些人是因为看见而相信,有些人则是因为相信而看见。相信自己,成为自己生命的那道光,才能照亮前方黑暗的道路,看见希望的曙光。



一、算术操作符

+ - * / %

1.除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数
2.对于 / 操作符如果两个操作数都为整数,执行整数除法(求商舍余)。而只要有浮点数,执行的就是浮点数除法。
3. % 操作符的两个操作数必须为整数,若其中一个不为整数则报错,返回的是整除之后的余数。

#include<stdio.h>
int main()
{
   
	int a = 5;
	int b = 2;
	int c = 0;
	printf("a+b = %d\n", a + b);//相加
	printf("a-b = %d\n", a - b);//相减
	printf("a*b = %d\n", a * b);//相乘
	printf("a/b = %d\n", a / b);//求商
	printf("a%%b = %d\n", a % b);//取模
	return 0;
}

在这里插入图片描述

#include<stdio.h>
int main()
{
   
	/*double a = 5.0 / 2;*/
	double a = 5 % 2.0;//报错
	printf("a = %lf", a);
	return 0;
}

二、移位操作符

<< >>

左移操作符 << 操作二进制补码
移位规则:左边抛弃、右边补0

总结:左移移动一位正数相当于直接乘以2,负数也一样,移动n位,乘以2 ^ n。

在这里插入图片描述
在这里插入图片描述

右移操作符 << 操作的是二进制补码

计算机中的数字都是以补码的形式存储的,其中正数原码、反码、补码相同,负数的反码由原码按位取反(符号位不变)求得,补码 = 反码 + 1。
十进制:1 二进制原码 / 反码 / 补码:00000000 00000000 00000000 00000001
十进制: - 1
二进制原码:10000000 00000000 00000000 00000001
二进制反码:11111111 11111111 11111111 11111110
二进制补码:11111111 11111111 11111111 11111111

-1 >> 1(右移一位) 二进制补码:_1111111 11111111 11111111 11111111
首先右移运算分两种 :
1.算术移位左边用原该值的符号位填充,右边丢弃
2.逻辑移位左边用0填充,右边丢弃

按照算术移位 那么_该填充 1 二进制补码:11111111 11111111 11111111 11111111 -> - 1(转原码)
按照逻辑移位 那么_该填充 0 二进制补码:01111111 11111111 11111111 11111111 -> 1(转原码)

应用实际的代码进行验证:

#include<stdio.h>
			int main()
{
   
	int a = -1;//00000000 00000000 00000000 00010000
	int b = a >> 1;// _0000000 00000000 00000000 00001000
	//_ 位置有两种方式填充 1.算术右移:补充符号位 2.逻辑右移:直接补0
	//注意计算机存储的是二进制补码 正数三码合一  负数的补码=反码+1 
	printf("%d\n", b);
	return 0;
}
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大家好我叫张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值