news 2026/2/24 2:54:07

操作符的认识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/2/15 21:38:11

vue基于Spring Boot框架的校园自习室预约管理系统设计与实现_zzv88288

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/2/19 9:26:57

开源媒体客户端革新:如何用Jellyfin重塑你的家庭影院体验

开源媒体客户端革新&#xff1a;如何用Jellyfin重塑你的家庭影院体验 【免费下载链接】jellyfin-androidtv Android TV Client for Jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-androidtv 还在为商业流媒体平台的限制而烦恼吗&#xff1f;想要完全掌…

作者头像 李华
网站建设 2026/2/18 18:12:58

Charticulator 完整指南:5步快速掌握交互式图表设计

Charticulator 完整指南&#xff1a;5步快速掌握交互式图表设计 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator Charticulator 是由微软开发的强大开源工具&…

作者头像 李华
网站建设 2026/2/12 0:26:16

照片如何轻松转格式?照片格式转换器使用指南

在日常使用照片的过程中&#xff0c;我们经常会遇到格式不兼容的问题 —— 比如某些平台仅支持 JPG 上传&#xff0c;而手中的素材是 PNG;或者需要用 WEBP 格式减小图片体积&#xff0c;却不知如何转换。其实&#xff0c;借助便捷的在线照片格式转换器&#xff0c;无需安装复杂…

作者头像 李华
网站建设 2026/2/9 14:37:14

学习周报二十六

摘要 本周深入研读了NeurIPS 2025最佳论文《Gated Attention for Large Language Models》&#xff0c;系统分析了传统Softmax注意力机制存在的“注意力沉没”与“巨量激活”问题&#xff0c;以及Qwen团队通过引入Sigmoid门控实现的创新解决方案。同时&#xff0c;复盘了该论文…

作者头像 李华
网站建设 2026/2/22 16:43:38

ffmpeg-python管道技术:重新定义视频处理的未来

ffmpeg-python管道技术&#xff1a;重新定义视频处理的未来 【免费下载链接】ffmpeg-python Python bindings for FFmpeg - with complex filtering support 项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg-python 还记得那些被大视频文件折磨的日子吗&#xff1f…

作者头像 李华