首页 > 其他分享 >操作符详讲系列·1

操作符详讲系列·1

时间:2024-10-27 15:52:13浏览次数:3  
标签:详讲 系列 符号 补码 按位 操作符 反码 原码

进制就不给大家详细的进行讲解了

1,原码,反码,补码

整数的2进制表⽰⽅法有三种,即原码、反码和补码

1,整数分为有符号的整数和无符号的整数,无符号的整数只有0和正整数,有符号的整数又分为正整数和负整数,正整数的原码反码补码都是一样的,负整数的原码反码补码各不相同,需要进行计算。

有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号 位,剩余的都是数值位。其中0表示正数,1表示负数。

原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码:将反码加一就可以得到。//或者就是将原码进行取反加一直接得到。

补码是在内存中进行储存的,原码是对外进行展示的

相反:要是从补码得到原码也可以直接进行取反加一。

对于整数来说,在内存中存放的就是补码:

(为什么呢? 在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀ 处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算 过程是相同的,不需要额外的硬件电路。)

2,如果是无符号的整数,那么就没有符号位,全都是数值位,也是32个比特位

2, 移位操作符

<<左移操作符       (针对于整数,移动的是二进制,双目操作符)

>>右移操作符(可以看成箭头指向哪里就是往哪里移动)

注: 移位操作符的操作数只能是整数。

1,左移操作符 移位规则:

   左边补0,右边丢弃。

向左边移动一位以后,多出来的直接丢弃,右边补上0,数值改变。

2,右移操作符  移动规则:

⾸先右移运算分两种:

1. 逻辑右移:左边⽤0填充,右边丢弃     2. 算术右移:左边⽤原该值的符号位填充,右边丢弃

(到底我们应该使用哪一种方式,C语言并没有明确的规定,但是常见的编译器都是算术右移,把右边进行丢弃,左边用原值的符号位进行填充。)

给一个例子10吧。

//图中10是正数,原码反码补码都是一样的,右移之后,原本是正数,那么左边就补上0。

那么如果是负数该怎么办呢:-10

这次-10是负数,原码反码补码各不相同,先把他换成补码,再进行运算(操作符的变换一定是用补码进行的)变成补码之后,进行右移两个比特位,这时候由于他原本是-10,是负数,那么符号位是1,就给左边加上两个1。

//⚠警告:在进行移位的时候,不要移动负数,这是在C语言之中没有进行规定的

3,位操作符:&、|、^、~

移位操作符有:(操作的必须是整数)   --单目操作符

1,按位与&,

2,按位或 |,                  3,按位异或 ^,            4,按位取反 ~,

当有两个数进行这一系列的位操作符的时候,必须要换成二进制位的数字,不然会很难看明白

先把两个数这样进行排列,,,然后把它们一行一行的每一行进行分开,这样上下的看进行比较

1,按位与&--------意思就是当上下这两个数都是1的时候,最终得到的反码才是1,只要有一个是0,那就是0。

2,按位或|---------意思就是当上下这两个数只要有一个是1的时候,那么最终得到的补码就是1,都是0的时候才会是0,两个都是1的话,就还是1。

3,按位异或^--------意思就是当上下这两个数如果他们相同的话那么最终得到的补码就是0,但是如果上下两个数(一个是0,一个是1),那么最终得到的补码就是1。

4,按位取反~--------单目操作符,对二进制位进行取反操作。

异或操作是支持交换律的,异或也有一个很实用的特征就是:一个数与自身异或的结果是0。

一个数与0进行异或,结果就是它本身。

4,逗号表达式

逗号表达式,就是⽤逗号隔开的多个表达式。 逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果

逗号表达式的结果实际上是看最后一个表达式的结果,但是前面的还是要看,还是要进行计算,因为前面的表达式是会影响其他的变量的

标签:详讲,系列,符号,补码,按位,操作符,反码,原码
From: https://blog.csdn.net/daiwoliyunshang/article/details/143268730

相关文章

  • 鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题
    1.TCP数据传输粘包简介在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中,我们演示了TCP数据粘包的表现,如图所示:随后解释了粘包背后的可能原因,并给出了解决TCP传输粘包问题的两种思路,第一种是指定数据包结束标志,在本系列第35篇《鸿蒙网络编程系列35......
  • [QT基础系列]单选按钮QRadioButton
    单选按钮QRadioButtonQt中的单选按钮类是QRadioButton它是一个可以切换选中(checked)或未选中(unchecked)状态的单选按钮单选按钮常用在“多选一”的场景,也就是说,在一组单选按钮中,一次只能选中一个单选按钮比如性别中的“男女”二选一,学历中的“博士/硕士/本科/其他......
  • [QT基础系列]复选按钮QCheckBox
    复选按钮QCheckBoxQt中的复选按钮类是QCheckBox它和[单选按钮]很相似,单选按钮常用在“多选一”的场景,而复选按钮常用在"多选多"的场景比如喜欢的水果选项中,可以在“苹果/桃/梨/橘子/香蕉”中选择多个。文本这两个是其父类QAbstractButton中的属性和方法,因此......
  • YOLOv11全网最新创新点改进系列:融合GSConv+Slim Neck,双改进、双增强,替换特征融合层实
    YOLOv11全网最新创新点改进系列:融合GSConv+SlimNeck,双改进、双增强,替换特征融合层实现,轻量化涨点改进策略,有效涨点神器!所有改进代码均经过实验测试跑通!截止发稿时YOLOv11已改进40+!自己排列组合2-4种后,考虑位置不同后可排列组合上千万种!改进不重样!!专注AI学术,关注B站up主:Ai......
  • YOlO系列——yolo v3
    文章目录一、算法原理二、网络结构三、正负样本匹配规则四、损失函数五、边框预测六、性能特点七、应用场景YOLO-v3(YouOnlyLookOnceversion3)是一种先进的目标检测算法,属于YOLO系列算法的第三代版本。以下是对YOLO-v3的详细介绍:一、算法原理YOLO-v3算法是一种......
  • 【渗透实战系列】 从SQL注入渗透内网(渗透的本质就是信息搜集)
    前言一个SQL注入可以帮我们的不仅仅是获取数据库表里的数据,还能让我们直接获取到目标服务器的权限,减少我们渗透的时间,本文主要围绕SQL注入如何进内网来写的,不多说兄弟们看文章就完事了。给我一个SQL注入我能干翻你内网朋友们如果有需要全套《网络安全入门+进阶学习......
  • 数据集&yolo关键点模型 -关键点系列- 手部关键点数据集 handpose keypoints >> DataBall
    数据集&yolo关键点模型-关键点系列-手部关键点数据集handposekeypoints>>DataBall该示例用3k+数据训练,模型采用yolo11n架构,对于一些简单场景可以满足左右手检测及21关键点检测,运算量小,模型效能高。后期会推出yolo11s,yolo11m架构模型或其它yolo系列。一、模型推......
  • 【K8S系列】Kubernetes pod节点Unknown 问题及解决方案详解【已解决】
    在Kubernetes中,Pod的状态为Unknown表示无法获取Pod的当前状态。这通常意味着KubernetesAPI服务器无法与Pod所在的节点通信,或者Kubelet进程遇到问题。以下将详细介绍Unknown状态的原因、解决方案以及如何配置健康检查以提高系统的稳定性。一、Unknown状态......
  • 动态规划之子数组系列(下)
    文章目录等差数列划分最长湍流子数组单词拆分环绕字符串中唯一的子字符串等差数列划分题目:等差数列划分思路状态表示:dp[i]表示,以i位置为结尾的所有子数组中有多少个等差数列状态转移方程:在当前位置nums[i]上,若若nums[i]-nums[i-1]==nums[i-1]-num......
  • Yolo系列——Yolo v2
    文章目录一、核心原理二、网络结构三、关键改进1.BatchNormalization2.高分辨率分类器3.Anchor机制4.直接坐标预测5.多尺度训练四、总结YOLOv2(YouOnlyLookOnceversion2)是一种用于目标检测的深度学习模型,它在YOLOv1的基础上进行了多项改进,提高了检测速度和精度......