C语言操作符详解(一)

一、操作符的分类

• 算术操作符: + 、- 、* 、/ 、%
• 移位操作符:<<  >> 
• 位操作符: &  |  ^ 
• 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 、^= 
• 单⽬操作符: !、++、--、&、*、+、-、~ 、sizeof、(类型)
• 关系操作符: > 、>= 、< 、<= 、 == 、 != 
• 逻辑操作符: && 、||
• 条件操作符: ?   :
• 逗号表达式: ,
• 下标引用: []
• 函数调用: ()

• 结构成员访问: .  、->

 二、二进制和进制转换

所有的进制都是数值的不同表现形式。

数字15

二进制:1111

八进制:17

十六进制:F

十六进制一般写成0x什么,如15:0xF

八进制一般写成0什么,如15:017

2.1二进制转十进制

        十进制中满10进1,二进制中满2进1。

十进制中,例如123每一位是有权重的,从右到左依次是个位数,十位数,百位数,每一位的权重分别是10^0,10^1,10^2。

二进制与十进制是类似的,权重依次是2^0,2^1,2^2.....

二进制例如1101

它的十进制算出来是13。

2.2十进制转二进制

2.3二进制转八进制

八进制数的每一位是0-7,0-1写成二进制的时候需要三位就足够了,所以三位二进制组成一位八进制的数。

如二进制的01101011,换成八进制0153

2.4二进制转十六进制

        十六进制的每一位是0-9,a-f,各自写成二进制,只需要四位二进制位。

如二进制的01101011,转换成十六进制0x6b,十六进制写的时候前面要加0x。

三、原码、反码、补码

整数的2进制表示方法有三种,即原码、反码和补码。
有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号
位,剩余的都是数值位。符号位都是用0表示“正”,用1表示“负”。

正数:正数的原码,反码,补码都相同。

负数:负数的原码,反码,补码都不相同。

原码:直接按照正负数的形式翻译成二进制。

反码:原码的符号位不变,其它按位取反。

补码:反码+1。

对于整型来说,数据存放内存中其实存放的是补码。

四、移位操作符

<<左移操作符

>>右移操作符

4.1左移操作符

规则:左边抛弃,右边补零。

当num左移一位时,为什么n等于20呢?

如图可以看出,num左边丢1位,右边补了一位。

4.2右移操作符

右移操作符移位规则分为两种:

1.逻辑右移:左边用0填充,右边丢弃。

2.算术右移:左边用该值的符号位填充,右边丢弃。

编译器中通常采用算术右移。

对于移位运算符,不要移动负数位,这个标准还未规定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512015.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一本好书《大模型应用开发极简入门:基于GPT-4和ChatGPT》

如果问个问题&#xff1a;有哪些产品曾经创造了伟大的奇迹&#xff1f;ChatGPT 应该会当之无愧入选。仅仅发布 5 天&#xff0c;ChatGPT 就吸引了 100 万用户——当然&#xff0c;数据不是关键&#xff0c;关键是其背后的技术开启了新的 AI 狂潮&#xff0c;成为技术变革的点火…

LCR 161. 连续天数的最高销售额

解题思路&#xff1a; 动态规划&#xff0c;比较灵活&#xff0c;不一定非要dp[i] class Solution {public int maxSales(int[] sales) {int res sales[0];for(int i 1; i < sales.length; i) {//对sales[i] 进行更新&#xff0c;如果前一个元素是负数&#xff0c;则取 0…

JDK、JRE、JVM的联系区别

在第一章中我们介绍了JDK的下载配置与IDEA开发环境的下载安装&#xff0c;以及分别在这两个&#xff08;电脑本机和IDEA&#xff09;环境上执行了我们的第一个源程序。通过直观的使用&#xff0c;我们可以感受到集成开发环境的便捷。 大家也更加对JDK有了直观的了解&#xff0c…

python 基础知识点(蓝桥杯python科目个人复习计划58)

今日复习内容&#xff1a;做题 例题1&#xff1a;仙境诅咒 问题描述&#xff1a; 在一片神秘的仙境中&#xff0c;有N位修仙者&#xff0c;他们各自在仙境中独立修炼&#xff0c;拥有他们独特的修炼之地和修炼之道&#xff0c;修炼者们彼此之间相互尊重&#xff0c;和平相处…

【小黑嵌入式系统第十七课】结课总结(一)——硬件部分(系统总线处理器外设通信)

上一课&#xff1a; 【小黑嵌入式系统第十六课】PSoC 5LP第三个实验——μC/OS-III 综合实验 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff1a;人工智能 文章目录 一、基础知识…

数据库和缓存如何保持一致性

目录 前言 更新数据库更新缓存&#xff1a; 1.在更新缓存前先加一个分布式锁 2.在更新完缓存时&#xff0c;给缓存加上较短的过期时间 Cache Aside策略 1.先删除缓存&#xff0c;再更新数据库 延迟双删 2.先更新数据库&#xff0c;再删除缓存 保证两个操作都能执行成功…

uniapp制作--简单的tab切换

一、实现思路 在UniApp中&#xff0c;可以使用v-if来控制Tab栏并进行切换。 创建一个方法来控制点击时的效果。 二、实现步骤 ①view部分展示 <!-- tab选项 --><view class"select-area"><view class"select-top"><view clas…

C++入门项目:通讯录管理系统

文章目录 一、步骤拆分1.系统需求2.显示菜单3.添加联系人4.显示联系人5.删除联系人6.查找联系人7.修改联系人8.清空通讯录9.退出功能 二、完整代码&#xff08;200行&#xff09;三、手把手视频教程 一、步骤拆分 1.系统需求 利用C来实现一个通讯录管理系统&#xff0c;系统中…

npm、cnpm、pnpm使用详细

简介&#xff1a; npm&#xff1a;npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理工具&#xff0c;用于安装、更新、卸载Node.js的模块和包。它提供了一个命令行界面&#xff0c;使得开发者可以轻松地管理项目依赖。npm 是 nodejs 中的一部分&#xff0c;…

视频怎么在线转换gif?分享简单一招在线转换

在现在的互联网时代&#xff0c;gif动图已经是非常流行的一种图像格式了。特别是在网络聊天中&#xff0c;能够快速有效的传达情感等。当我们的手中有一些视频素材&#xff0c;想要从中截取gif动画时可使用在线动画制作&#xff08;https://www.gif.cn/&#xff09;工具&#x…

新手想玩硬件,买单片机还是树莓派好?

新手想玩硬件&#xff0c;买单片机还是树莓派好&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#x…

服务器出现故障如何恢复数据?

服务器数据恢复案例之服务器raid6中3块硬盘离线导致阵列崩溃的数据恢复案例 服务器故障&#xff1a; 服务器中有一组由6块盘组建的 RAID6&#xff0c;这台网站服务器上运行MYSQL数据库和存放其它类型的文件。该组raid中有两块磁盘离线&#xff0c;管理员没有及时更换磁盘&#…