C语言第十四课:操作符详解(上)——算数、移位、位、赋值操作符

本文详细介绍了C++中的算术操作符如+、-、*、/、%,移位操作符>>、<<以及位操作符&、|、^的使用和原理,包括原码、反码、补码的概念。同时,讨论了赋值操作符和复合赋值操作符的运用。通过实例代码和运行结果,加深了对这些操作符的理解。
摘要由CSDN通过智能技术生成

目录

前言:

一、操作符分类:

二、操作符详解:

        1.算术操作符+、-、*、/、%:

        2.移位操作符>>、<<:

        1.原码、反码与补码:

        2.左移操作符:

        3.右移操作符:

        4.警告⚠:

        3.位操作符&、|、^:

        ①.按位与 &:

        ②.按位或 |:

        ③.按位异或 ^:

        ④.作用场景:

        4.赋值操作符与复合赋值操作符:

        ①.赋值操作符:

        ②.复合赋值操作符:

三、总结:


前言:

        我们在前面几篇文章中对井字棋和扫雷两个阶段性练习进行了详细的练习讲解,想必各位小伙伴们对于前面学到的知识也能较为充分的掌握了。从本文开始,我们将继续进行下一部分关于操作符的学习。

一、操作符分类:

        简单来说,操作符可以分为以下十类:

算术操作符 移位操作符 位操作符
赋值操作符 单目操作符 关系操作符
逻辑操作符 条件操作符 逗号表达式
下标引用、函数调用和结构成员

        而在接下来的文章中我也将按照这样的分类和顺序,为各位小伙伴们介绍一些有关操作符的知识。 

二、操作符详解:

        1.算术操作符+、-、*、/、%:

        算术操作符很简单也很常见,是普遍用于我们代码中的各种量的计算的基本运算,其用法也很简单,与我们平日里的算术逻辑相同:

int main()
{
	int a = 10;
	int b = 4;
	int c = 0;
	c = a + b;
	printf("a + b = %d\n", c);
	c = a - b;
	printf("a - b = %d\n", c);
	c = a * b;
	printf("a × b = %d\n", c);
	c = a / b;
	printf("a ÷ b = %d\n", c);
	c = a % b;
	printf("a对b求余 = %d\n", c);
	return 0;
}

        运行结果简单明了:

        这些操作符的使用很简单,但我们在使用时仍需注意一些细节问题。除' % '操作符外,其他几个操作符均可以作用于整数与浮点数,而使用' % '操作符进行计算的两个操作数必须为整数,返回的是整除之后的余数。对于' / '操作符,如果两个操作数均为整数,则执行整数除法,而两个操作数中任意一个(或两个)为浮点数,则执行浮点数除法

int main()
{
	int a = 10;
	int b = 3;
	double c = 3.0;
	printf("a ÷ b = %d\n", a / b);
	printf("a ÷ c = %lf\n", a / c);
    //用lf进行打印的double与float类型浮点数默认打印至小数点后六位
	//在lf前加上"."+打印位数,可以改变为我们希望打印的位数
	printf("a ÷ c = %.1lf\n", a / c);
	return 0;
}

        运行结果验证:

        2.移位操作符>>、<<:

        在这里为各位小伙伴们进行说明,移位操作符中的“位”,指的是二进制位,且移位操作符的操作数只能是整数

        在最开始的学习中,我们提到过,数据在计算机中的存储,存储的是其对应的二进制补码,而移位操作符所操作的,正是各数据的二进制补码。

        1.原码、反码与补码:

        在我们开始细致了解移位操作符之前,我们首先要了解什么是原码,什么是反码,什么又是补码。

        我们都知道,对于一个数,计算机要使用一定的编码方式进行存储,在计算机中通过使用电势的高低来对数据进行存储,高电平为1,低电平为0,则每一位上均存在两种情况,则在32位的计算机中就总共存在着2^32种不同的组合,于是我们在计算机中便可以根据电势的高低来存储数据的二进制码。即原码、反码、补码是机器存储一个具体数字的编码方式。

        在数据存储时,整个二进制码的首位我们将其定为符号位,0表示正数,1表示负数:

+1在32位计算机中的表示为:0000 0000 0000 0000 0000 0000 0000 0001

- 1在32位计算机中的表示为:1000 0000 0000 0000 0000 0000 0000 0001

        这样直接由数据本身转换成的二进制序列即为数据对应的原码

        那么什么是反码呢?正数的反码就是其本身,而负数的反码则是将数据除符号位以外所有位均按位取反后得到的二进制序列:

+1在32位计算机中的反码为:0000 0000 0000 0000 0000 0000 0000 0001

- 1在32位计算机中的反码为: 1111 1111  1111 1111  1111 1111  1111  1110

        最后就是数据的补码了,正数的补码仍是其本身,而负数的补码则是在其反码的基础上+1

 +1在32位计算机中的补码为:0000 0000 0000 0000 0000 0000 0000 0001

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

銮崽的干货分享基地

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

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

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

打赏作者

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

抵扣说明:

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

余额充值