C语言基础:操作符详解(一)
目录一、操作符的分类二、二进制和进制转换但我们该怎么完成常用进制之间的进制转换呢如何完成十进制到二进制​编辑如何完成二进制转到八进制如何完成二进制转到十六进制如何完成其他进制的转换前言C语言中提供了非常丰富的操作符一、操作符的分类一些简单的操作符比如算术操作符赋值操作符关系操作符逻辑操作符相信大家都已了解本文重点在于有关二进制的移位操作符和位操作符还有部分单目操作符sizeof~二、二进制和进制转换因为本文要讲的移位操作符和位操作符部分单目操作符~都用到了二进制的知识所以我们先讲一个明白进制转换的问题常见的有二进制八进制十六进制那我们生活中常见的十进制举例子每一位上的数字范围是0~9比9大之后需要在下一位进1所以我们可知二进制的数字范围是0~1显而易见八进制十六进制就以此类推了。依据权重将二进制转为十进制最为简单但我们该怎么完成常用进制之间的进制转换呢如何完成十进制到二进制一些比较小的数我们可以直接凑但较大的数字在凑的话会很麻烦所以我们可以用这种整除的方法类似于小学学的求最大公约数如何完成二进制与八进制的互相转化八进制的每位数是0~7而二进制111对应的数就是7所以每三个2进制的都可以对应为一个八进制剩余不够的直接换算还有一种说法就是2的三次方是8二进制每一位的权重的三次方是对应八进制每一位的权重所以三个二进制转换为一个八进制二进制转换为八进制需要每三个数算反之八进制将每位数拆成三个二进制在八进制数字前面加上0编译器会将其识别为八进制如何完成二进制转十六进制的互相转化十六进制的每一位数字则是0~9a~f将最大的数写成二进制最多四位二进制就足够了。所以一位十六进制就可以用四个二进制替换16进制表示时前面加一个0x如何完成其他进制的转换我们学会了二进制所有的转换十进制八进制十六进制之间转换则需要换成二进制后转换三、原码、反码、补码整数二进制表示形式有三种原码反码补码整数分为有符号整数无符号整数正数负数有符号整数的三种表示方法分为符号位和数值位两个部分最高的一位被当作符号位“0”代表正“1”代表负正整数原码反码补码相同 负整数的原码反码补码不同无符号整数原码反码补码相同原码直接将数值翻译成二进制的数字反码: 将原码翻译对应的每一位二进制数字都按位取反补码反码加一得到补码补码取反再加一也可得到原码常用跳过对于整形数据来说数据存储计算表示都是用的补码因为补码可以将符号位和数值域统一处理加法和减法统一处理CPU有只有加法器并且原码和补码的相互转换的过程是相同的都是可以通过取反加一得到因此不需要额外的电路四、移位操作符 左移操作符 右移操作符注操作数只能是整数移动的是二进制的位1.左移操作符#includestdio.h int main() { int a -10; //1000000000000000000000001010 -10原码 //1111111111111111111111110101 反码 注意符号位不变 //1111111111111111111111110110 补码 int b a 1 ; //1111111111111111111111101100 b的补码 //1000000000000000000000010100 b的原码 左边抛弃右边补0 printf(a %d,a); // -10 printf(b %d,b); // -20 左移相当于乘上2 return 0; }2.右移操作符1逻辑右移左边用0补充右边丢弃2算术右移左边与原符号位相同右边抛弃使用哪一种取决于编译器的实现我们常用的编译器都是算术右移int main() { int a -10; //1000000000000000000000001010 -10原码 //1111111111111111111111110101 反码 注意符号位不变 //1111111111111111111111110110 补码 int b a 1 ; //1111111111111111111111111011 b的补码 //1000000000000000000000000101 b的原码 左边与原符号位相同右边补0 printf(a %d,a); // -10 printf(b %d,b); // -5 右移相当于除上2 return 0; }五、位操作符1.基础概念1. //按位与2. | //按位或3. ^ //按位异或4. ~ //按位取反int main() { int a 10; //000000000000000000000001010 a的原反补 int b -7; //100000000000000000000000111 //111111111111111111111111001 b的补码 int c a b;//只要有0则为0同时为1则为1 //000000000000000000000001010 //111111111111111111111111001 //000000000000000000000001000 c的原反补码 printf(%d\n, c);//8 int d a | b ;//有1则为1同时为0则为0 //000000000000000000000001010 //111111111111111111111111001 //111111111111111111111111011 d的补码 //100000000000000000000000101 d的原码 printf(%d\n, d);//-5 int e a ^ b; // 按位异或 x相同为0 相异为1 }4.按位取反int main(){ int a 0; //000000000000000000000000000000 0的补码 printf(%d , ~a); //111111111111111111111111111111 按位取反 //100000000000000000000000000001 }注与原码到反码不同符号位也需取反

相关新闻

第一次让 AI 帮你写代码:用 JavaScript 完成一个待办事项清单

第一次让 AI 帮你写代码:用 JavaScript 完成一个待办事项清单

文章目录一、先明确我们要做什么二、先让 AI 拆解需求三、再让 AI 生成代码四、完整可运行代码五、如何运行这段代码六、如何验证 AI 生成的代码七、AI 生成代码时常见的问题1. 代码看起来完整,但无法运行2. 只实现了正常情况3. 代码能运行,但自己看不懂…

2026/10/10 17:55:38 阅读更多 →
Java RAG 实战(第 6 篇):Markdown 知识库与 RAG

Java RAG 实战(第 6 篇):Markdown 知识库与 RAG

系列导航 所属专栏:《Java 开发者从零实现 RAG 知识库》学习位置:第 6 篇 / 共 12 篇上一篇:《第5篇:Embedding 与语义检索》下一篇:《第7篇:使用 Qdrant 保存和检索向量》 本篇先不引入向量数据库&#x…

2026/10/10 17:55:46 阅读更多 →
继承体系搭好了,方法找不到了

继承体系搭好了,方法找不到了

系列回顾:上一篇毛毛姐叠了三个装饰器,执行顺序全反了——洋葱模型 + 协议覆盖,元编程的两把双刃剑。这一篇,毛毛姐搭了个粉丝管理的多重继承体系,结果方法调用顺序完全不对。 📋 本期坑点速览:多重继承 MRO 顺序反直觉 super() 在闭包中绑定错误类 __name 名称修饰不…

2026/10/10 1:28:57 阅读更多 →

最新新闻

SpringBoot+Vue学生成绩分析与可视化平台全解析

SpringBoot+Vue学生成绩分析与可视化平台全解析

每年毕业季我都能在技术社区里看到大量和“成绩管理系统”相关的提问,这个题目属于那种“看起来老套、实则非常能打”的典型选题。特别是把Java、Vue、SpringBoot这三个词绑在一起的时候,它考查的已经不只是“会写增删改查”,而是完整的前后端…

2026/10/13 2:33:32 阅读更多 →
自制PS5辅助工具箱:游戏库管理、存储分析与网络监测实战

自制PS5辅助工具箱:游戏库管理、存储分析与网络监测实战

前一阵子,我遇到一个几乎所有主机玩家都会碰到的场景:周末想装一款新游戏,系统弹出提示说内置存储空间不足。那一刻我站在电视前反复权衡:哪款游戏已经通关了?哪款还有继续玩的价值?它究竟占了多少空间&…

2026/10/13 2:33:32 阅读更多 →
Java常用类核心解析:String、包装类与时间日期API的实践要点

Java常用类核心解析:String、包装类与时间日期API的实践要点

写这份笔记之前,我先说个背景。我的JavaSE学习笔记已经更到第四篇,前几篇分别梳理过环境搭建和基础语法、面向对象的核心思想、继承多态和接口这些抽象概念。到这期聊"常用类",性质突然就变了——不再是学概念,而是在学…

2026/10/13 2:33:32 阅读更多 →
Grafana配置文件grafana.ini全解:核心参数、修改与避坑指南

Grafana配置文件grafana.ini全解:核心参数、修改与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:33:32 阅读更多 →
gdal111编译版部署指南:环境变量配置与避坑实践

gdal111编译版部署指南:环境变量配置与避坑实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:33:32 阅读更多 →
Bootstrap 4多级下拉菜单实现:解决复杂导航层级难题

Bootstrap 4多级下拉菜单实现:解决复杂导航层级难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:32:31 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →