news 2026/4/3 4:16:49

操作符的认识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/3/4 17:57:51

静态博客迁移终极指南:3步告别WordPress卡顿时代

静态博客迁移终极指南&#xff1a;3步告别WordPress卡顿时代 【免费下载链接】gridea ✍️ A static blog writing client (一个静态博客写作客户端) 项目地址: https://gitcode.com/gh_mirrors/gr/gridea 还在为WordPress的缓慢加载而烦恼吗&#xff1f;每次打开后台都…

作者头像 李华
网站建设 2026/3/30 5:31:44

21天学会OpenHarmony跨平台开发 - windows + Flutter【Day8】

昨天把底部导航栏外观完成了&#xff0c;但是点击还不能切换&#xff0c;今天把点击功能添加上&#xff0c;并且完善浏览区。BottomNavigationBar 组件自带 onTap 方法并自动传入当前点击的 index&#xff0c;需要定义一个存放导航栏按钮索引的变量&#xff0c;在无状态类中添加…

作者头像 李华
网站建设 2026/3/31 23:27:23

MobaXterm高效运维实战指南

MobaXterm高效运维实战技术文章大纲引言简述MobaXterm的核心功能与适用场景运维工程师面临的痛点与MobaXterm的解决方案MobaXterm基础配置与优化安装与基础设置&#xff08;便携版与安装版选择&#xff09;界面定制&#xff08;主题、字体、布局调整&#xff09;会话管理&#…

作者头像 李华
网站建设 2026/4/3 3:22:04

终极USB启动盘制作指南:Rufus完整使用教程

终极USB启动盘制作指南&#xff1a;Rufus完整使用教程 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 还在为系统重装而烦恼吗&#xff1f;Rufus这款强大的USB启动盘制作工具将彻底改变你的系统部…

作者头像 李华
网站建设 2026/3/28 11:32:34

AI如何帮你自动生成HTML注释?提升代码可读性

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个HTML文件&#xff0c;包含常见的页面结构&#xff08;header, nav, section, footer&#xff09;。使用AI自动为每个HTML标签添加注释&#xff0c;说明其功能和用途。注释应…

作者头像 李华