C语言之详解操作符

哈喽各位老铁,本期给大家分享操作符的有关内容。其实在之前的学习我们已经了解了一部分操作符了。好了废话不多说了,让我们一起学习一下操作符的使用。


首先,了解一下本期内容的大纲:

大纲

我们发现有一部分在之前的学习都潜移默化的了解过,所以本期我们重点学习从未接触过的操作符;


一、操作符的分类


以上就是操作符的分类,在前面的分享中已经学习过了过算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单⽬操作 符,今天继续介绍⼀部分,操作符中有⼀些操作符和⼆进制有关系,我们先铺垫⼀下⼆进制的和进制转换的知识。

二、二进制和进制转换

想必,大家都很好奇进制是什么吧?进制是指按照'逢特定数进位'的规则,表示数值的计数方式;其实理解起来很简单 eg:比如一周有7天,把天作为基本计数单位,数到第7天就会"进位"到"周";

在生活中我们常常能听到2进制,8进制,10进制,16进制...那么它们具体指的是什么呢?

生活中最常见的就是10进制,我们就以10进制为例,深刻的了解一下进制;

10进制,顾名思义就是逢10进1,它的每一位数字是由0~9组成的;eg:12

那么,2进制也就不难理解了;它就是逢2进1,它的每一位数字是由0~1组成的;eg:1101

2.1 十进制转为二进制

eg:请将10进制数288转换为2进制数

我们使用除2取余法

2.2 二进制转为十进制

使用按权展开相加法,我们就能够完成2进制向10进制的转换;

2.3 二进制转八进制和十六进制

2.3.1 二进制转八进制

规则:从二进制数的右往左****每3位分为一组,不足3位的在左边补零。再将每组对应成一位八进制数(0~7)。

那么具体如何转换呢?请大家参考下图:

2.3.2二进制转十六进制

规则:从二进制数的右往左每4位分为一组。不足4位的在左边补零,再将每组对应成一位16进制数(0~9,A~F)。

那么具体该如何转换呢?请参考下图:

好了,到这就跟大家分享了一下进制转换的内容,想必大家都收获满满吧!

三、原码、反码、补码

整数的2进制表⽰⽅法有三种,即原码、反码和补码
有符号整数的三种表⽰⽅法均有:符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号位,剩余的都是数值位。

符号位都是⽤0表⽰"正",⽤1表⽰"负"。
正整数的原、反、补码都相同。
负整数的三种表⽰⽅法各不相同。
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码。
反码得到原码也是可以使⽤:取反,+1的操作。

四、移位操作符

4.1左移操作符

(移位操作符的操作数只能是整数)

<<左移操作符

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

4.2右移操作符

>>右移操作符

移位规则:左边填0,右边抛弃

五、位操作符:&、|、^、~

六、单目操作符

!、++、--、&、*、+、-、~ 、sizeof、(类型)
单⽬操作符的特点是只有⼀个操作数,在单⽬操作符中只有&和*没有介绍,这2个操作符,我们放在学习指针的时候再介绍。

七、逗号表达式

逗号表达式,就是⽤逗号隔开的多个表达式。
逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。

八、下标引用

下标引用操作符
操作数:⼀个数组名 + ⼀个索引值

int arr10;//*创建数组
arr9 = 10;
//*实⽤下标引⽤操作符。
的两个操作数是arr和9。

九、函数调用

函数调用操作符( )
接受⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数。

小结:本节的学习我们了解了整数在计算机是如何存储的;掌握了进制转化,以及各个操作符的使用方法;想必各位老铁都收获满满吧!


以上就是本期要分享的所有内容了,我们下期不见不散;如果你觉得本文对你有帮助,请三连支持一下,你的支持是我持续创作最大的动力!

相关推荐
Herbert_hwt2 小时前
【C语言基础】常量、选择结构与运算符全解析
c语言·开发语言·算法
WWJA王文举15 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
qq_4480111616 小时前
C语言中的动态内存分配
c语言·开发语言·php
动词ing17 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
小雨笙笙19 小时前
C语言:变量三属性——存储类型
c语言·开发语言
Navigator_Z20 小时前
LeetCode //C - 1192. Critical Connections in a Network
c语言·算法·leetcode
布莱克60520 小时前
理解 C/C++ 中的 void* 指针
c语言·c++
(initial)21 小时前
C-05. Kernel Fusion 代价边界:少写回 vs 寄存器压力与 occupancy
c语言·开发语言·cuda
不正经学生1 天前
C语言字符串函数进阶:安全版函数 + 错误处理 + 子串查找
c语言·开发语言·c++·算法·面试
不正经学生1 天前
C语言大小端字节序:内存里字节的排列顺序
c语言·开发语言·arm开发·c++·算法·c#