news 2026/9/18 9:23:48

操作符的认识1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
操作符的认识1

文章目录

    • 一、操作符的分类
    • 二、算术操作符
    • 三、 二进制和进制转换
    • 四、原码、反码、补码
    • 五、移位操作符
      • 5.1左移操作符
      • 5.2 右移操作符

一、操作符的分类

操作符可以分为:
1.算术操作符:+、-、、/、%
2.移位操作符:<<、>>
3.位操作符:&、|、^
4.逻辑操作符:&&、||
5.赋值操作符:+=、-=、
=、/=、%=、>>=、<<=、&=、|=、^=
6.单目操作符:++、–、sizeof、+、-、*、!、~、&、(类型)
7.条件操作符:?、:
8.下标引用操作符:[ ]
9.结构体访问操作符: . 、->
10.函数调用操作符:( )
11.逗号表达式:,
12.关系操作符:<、>、==、!=、<=、>=

二、算术操作符

算术操作符通常是用来进行算术运算的
比如:

inta=0;a=4+4*3//先计算乘法,再计算加法a=(4+4)*3//可以通过括号,改变运算的顺序

需要注意的是,要给一个变量赋值是采用a=b+c的形式,要被赋值的变量在左边,要赋给变量的值在右边,这与数学的a+b=c不同
二、移位操作符
在认识移位操作符之前,我们需要先了解一下二进制

三、 二进制和进制转换

二进制。八进制、十进制、十六进制其实就是数值的不同表达形式而已
比如:15的各进制表达形式:
二进制:1111
八进制:1 7
十进制:15
十六进制:F
十进制,其实是我们生活中见得最多的,我们已经形成了许多常识

10进制中满10进一 十进制的每一位数都是由0~9的数字组成 其实在二进制中,也是一样的 在二进制中,满2进1 二进制的每一位数都是由0~1的数字构成的

那么,15的二进制数为什么是1111呢?
其实,不管是二进制、八进制、十进制,还是十六进制,每一位都是有权重的,就比如,十进制的权重从右往左依次是:1 0 0 , 1 0 1 , 1 0 2 . . . . . . 10^0,10^1, 10 ^ 2......100,101,102......
15他的十进制的由来其实就是5 ∗ 1 0 0 + 1 ∗ 1 0 1 = 15 5*10^0+1*10^1 = 155100+1101=15
第一位(个位)的权重就是1 0 0 10^0100,第二位的权重就是1 0 1 10 ^ 1101…第n位的权重就是10的(n-1)次方
十进制的值就是对应位的值对应位的权重,最后再相加,就是十进制的值
二进制和十进制都是类似的,只不过二进制的权重,从右往左,依次是2 0 、 2 1 、 2 2 2^ 0、2^1、2^2202122… 2 的(n-1)次方
知道了二进制如何转十进制,那么十进制怎么转二进制呢?
其实,很简单,采用连除的方法就可以了

所以,十进制的20转换为二进制后的结果就是10100
同样的,十进制转换为其他进制时,也采用连除的方法,把2替换成要转换的进制即可
需要注意的是:
在十六进制中,10 ~ 15是使用A ~ F来表示的,如果按照10~15来表示的话,就容易出现分不清到底是几位十六进制数的情况
比如:1110是四位十六进制呢?还是三位呢?又或者是两位呢?
所以,为了避免这样的情况发生,就统一的把十六进制中10 ~ 15用A~F来表示

接下来就是二进制转八进制、十六进制的方法
二进制想要转八进制,采用分组的办法,依次从右往左,每三位二进制位就是一位八进制,因为八进制的每一位数的取值范围是0~7,而三位二进制正好对应八进制的每一位最大能取得值,所以三位二进制就足够表示一位八进制
例如:

同样的,二进制转十六进制也是采用分组的方法,不同的是,二进制转十六进制是依次从右往左,每四位二进制位为一位十六进制位

四、原码、反码、补码

整数的二进制表示方法有三种,即原码、反码、补码
有符号的整数的二进制最高位是符号位,其余的是数值位
符号位为0表示正,符号位为1表示负
例如:

正数的原码、反码、补码相同
负数的原码、反码、补码的表示方法各不相同
原码:按照正负数的形式直接转换为二进制数就是原码
反码:符号位不变,其他位按位取反,也就是0变成1,1变成0
补码:取反+1

6 的原码反码补码: 00000000000000000000000000000110 -6 的原码: 10000000000000000000000000000110 反码: 11111111111111111111111111111001 补码: 11111111111111111111111111111010

补码得到原码也可以使用取反+1
无符号数的三种二进制表示方法相同,没有符号位,每一位都是数值位
对于整型来说,数据存放在内存里的其实就是补码

五、移位操作符

移位操作符分为:
左移操作符<<
右移操作符>>
需要注意的是:移位操作符的操作数只能是正数

5.1左移操作符

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

#include<stdio.h>intmain(){inta=10;a<<=1;//a = a<<1printf("%d",a);return0;}

运行结果:

画图理解一下

5.2 右移操作符

右移操作符又分为:
逻辑右移:左边用0填充,右边丢弃
算术右移:左边用原该值的符号位填充,右边丢弃
例如:

intmain(){inta=-6;intnum=0;num=a>>1;printf("%d",num);return0;}

运行结果:

显然,在VS2022中使用的是算术右移
算术右移画图表示:

逻辑右移画图表示:

警告:对于移位操作符,不要移动负数位,这个是标准未定义的

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 7:29:05

37、字符串与数字操作详解

字符串与数字操作详解 1. 参数展开基础 参数展开是一项非常实用的技术,它能让我们在脚本编写中更高效地处理变量和字符串。 例如,我们可以使用 ${parameter:?"parameter is empty"} 来检查参数是否为空,如果为空则会报错。 [me@linuxbox ~]$ foo=bar [me@…

作者头像 李华
网站建设 2026/9/17 14:33:34

学习试用codebuddy和Trae编程“俄罗斯方块”测试体验

一、先试用 codeBuddy 代码助手提交游戏制作说明&#xff0c;然后生成基本功能的俄罗斯方块&#xff0c;基本可用&#xff0c;有一些问题&#xff0c;告诉codeBuddy继续优化&#xff0c;基本能用。体验用了几天之后&#xff0c;今天突然提示试用资源用完了。一句话也不给输出了…

作者头像 李华
网站建设 2026/9/16 18:00:40

5分钟搞定RAG实验:LightRAG让学术研究变得如此简单!

5分钟搞定RAG实验&#xff1a;LightRAG让学术研究变得如此简单&#xff01; 【免费下载链接】LightRAG "LightRAG: Simple and Fast Retrieval-Augmented Generation" 项目地址: https://gitcode.com/GitHub_Trending/li/LightRAG 还在为复杂的RAG实验配置而头…

作者头像 李华
网站建设 2026/9/18 8:33:01

关于平抛运动的推导

平抛运动是指物体以一定的初速度沿水平方向抛出&#xff0c;仅受重力作用下的运动。它是一种常见的二维运动形式&#xff0c;结合了水平方向的匀速直线运动和竖直方向的自由落体运动。现在对平抛运动进行推导。分别在 xxx 方向和 yyy 方向上考虑 xxx 方向&#xff1a;由于不考虑…

作者头像 李华
网站建设 2026/9/17 10:45:05

从零开始构建类型安全的Feather图标库

从零开始构建类型安全的Feather图标库 【免费下载链接】feather 项目地址: https://gitcode.com/gh_mirrors/fea/feather 在现代前端开发中&#xff0c;图标作为用户界面的重要组成部分&#xff0c;其质量和易用性直接影响开发效率和用户体验。Feather图标库以其简洁优…

作者头像 李华
网站建设 2026/9/15 23:54:05

AWR1843毫米波雷达Python实时数据处理与可视化实战指南

AWR1843-Read-Data-Python-MMWAVE-SDK-3 项目为开发者提供了一套完整的解决方案&#xff0c;能够通过Python语言实时读取AWR1843毫米波雷达数据并进行可视化展示。无论您是从事智能交通、安防监控还是工业自动化领域&#xff0c;这款工具都能帮助您快速构建雷达应用原型。 【免…

作者头像 李华