关于位运算以及原码反码补码

【C语言】按位运算操作;原码、反码、补码 C语言中 按位操作 阅读详情

计算机组成原理的时候都学过,不过有点生疏了,最近在研究hashcode的时候遇到又重新整理复习了以下。贴在此处给大家观看也方便自己以后查阅~

位运算bit operation:

and运算& (按位与) : a & b 1&1=1,0&0=0 , 0&1=0
or运算 | (按位或) : 1 | 1 = 1, 1 | 0 = 1, 0 | 0=0
xor运算 ^ (按位异或)exclusive or ,数学符号为“⊕”,计算机符号为“eor”:
1 ^ 1 = 0 , 1 ^ 0 = 1, 0^ 0=0
(不同就是1,相同就是0)

a >> b带符号右移 :

  • 当a为正数时: 将a右移b位,在高位(左边)补0 ,例如:23 >> 2 =5:
    23的二进制表示为 10111,右移2位后变为 00101,00101的十进制就是5。
    注:23是int类型,Java中表示为32位,实际在计算机中记录为 00000000 00000000 00000000 00010111

  • 当a为负数时,将a右移b位,在高位(左边)补1 ,例如 -23 >> 2 = -6:
    -23在计算机中以其补码形式存在 11111111 11111111 11111111 11101001
    右移2位后变为 11111111 11111111 11111111 11111010 其对应的10进制数字就是-6
    (关于补码忘记了的可以滑到下面看~)

a>>> b无符号右移:
就是a无论是正数还是负数将其右移b位后,高位补零。

需要注意的是负数右移在高位补0相当于位数减少了并且变成了正数,因为第一位符号位变成了0表示正数。

number << n
带符号左移,无论对于正数还是负数,都是在低位补零。
对于正数相当于 乘以了2^n

不存在 <<< 无符号左移!

关于原码,反码,补码

原码:
原码就是符号位加上真值的绝对值, 即用第一位表示符号(0为正,1为负), 其余位表示值
[+1]原 = 0000 0001
[-1]原 = 1000 0001

反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。(1变0,0变1)

补码:

  • 正整数的补码与原码相同。 例如在8位二进制表示中,
    +23 = 00010111 ,

  • 负整数的补码,将其反码+1。例如(在8位二进制的表示中)
    1、-23 的原码对应 带符号位1的23 : 10010111
    2、 其反码:除符号位外按位取反: 11101000
    3、 最后+1 : 11101001

数0的补码表示是唯一的:
[+0]补=[+0]反=[+0]原=00000000
[ -0]补=11111111+1=00000000

计算机中的加减法都是利用补码来计算的!

关于进制、原码反码补码以及位运算 对进制还有那些令人头疼的各种码(大学那会学数字逻辑到这些什么补码啊,8421码啊。。。学渣看到这就头疼ε=(´ο`*)))唉)的一些基本理解,下午闲的没事干把这些东西稍稍缕了一下,记录分享出来。 进制   所谓进制就是逢几进1,二进制就是逢二进一,只能用0、1表示;八进制逢八进一,只能用0~7表示;十进制逢十进一,只能用0~9表示,16进制同理,用0~9,A、B、C、D、E、F。 用二进制 阅读详情

相关推荐

原码、反码、补码,位运算符

一、概念 原码、反码、补码:最高位均为符号位,1表示负数,0表示正数**。 正数的原反补码均相同,负数才不相同。 原码:最高位为符号位,其余位使用该数值的绝对值表示。 反码:在原码的基础上,符号位不变,原****码的其他位均取反**。 补码:反码+1,即在原码的基础上,符号位不变,原码的其他位取反后+1。补码的补码为原码。 二、补码的引入解决的问题 1、计算机中因符号位参与运算而得不到正确结果的现...

曹泽的博客 2117

小白学习生涯开章:二进制的学习>bit和bite>原码,反码,补码>负数的二进制

问:如何将二进制数10010转化为十进制? 答:将二进制数的每一位单独乘以2的n-1次方然后相加 如:12^4=8 02^3=0 02^2=0 12^1=2 0*2^0=0 将以上的数相加后:8+0+0+2+0=10,即为10010的十进制数 问:将16该十进制数转化为二进制 答:将十进制数除以2求得每个商的余数,截止于商为1时,再次除以2会得出0.5约等为1,倒叙写出即为二进制数 如:十进制数16 将以上的余数以及最后一位的商,倒写出来10000 如:十进制数13转化为二进制 13/2=6···1

q1020226956的博客 2009

进制转换、原码、反码、补码及位运算详解

对于进制换行进行详细的案例解析,原码、反码、补码的规则及在位运算时的应用示例,还有位运算符的规则及示例详解。

m0_61961937的博客 2960

32.原码、反码、补码

在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀ 处理;同时,加法和减法也可以统⼀处理()此外,补码与原码相互转换,其运算 过程是相同的,不需要额外的硬件电路。直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。将原码的符号位不变,其他位依次按位取反就可以得到反码。符号位都是⽤0表⽰“正”,⽤1表⽰“负”。反码+1就得到补码。

梦想 与 现实的博客 706

AHP层次分析法在项目风险评估中的实战应用(含Excel模板)

本文详细介绍了AHP层次分析法在项目风险评估中的实战应用。通过构建风险层次模型、利用判断矩阵量化主观判断,并结合Excel工具进行权重计算与一致性检验,将模糊的定性风险转化为清晰的量化排序。文章以新产品上线项目为例,提供了完整的分析流程和可操作的Excel模板,帮助项目经理高效识别并优先处理核心风险。

weixin_29061465的博客 570

GT-suite v2016的下载和安装

1 写在前面 GT-suite 是一款用来做内燃机仿真的软件。在安装过程中遇到很多问题,网上的安装教程也大都抄来抄去,试着安装了几遍都没有成功。最终在贴吧一个老哥的帖子里找到了解决办法,但是老哥的帖子也不是很详细,所以做了这个详细版本的教程。 GT-suite v2016安装包: 链接:https://pan.baidu.com/s/1JZPgJ8_-J-L8rV84-eHedQ 提取码:uj...

kisssshot的博客 2万+

数字电路中的原码,反码,补码的算法

引进机器数的3种表示法:原码、补码和反码,是将符号位和数值位一起编码,机器数对应的原来数值称为真值 1.原码表示法 原码表示方法中,数值用绝对值表示,在数值的最左边用“0”和“1”分别表示正数和负数,书写成[X]原表示X的原码。 例如,在8位二进制数中,十进制数+23和-23的原码表示为:  [+23]原=00010111 [-23]原=10010111 应注意,0的原码有两种表示,分

金家兴无 9629

海康威视iSC平台视频流对接:RTSP、HLS、WS三种协议到底该怎么选?

本文深入分析海康威视iSC平台视频流对接中RTSP、HLS和WebSocket三种协议的优缺点,帮助开发者根据实时性、兼容性和网络环境做出最优选择。特别适合综合安防管理平台的Web视频监控系统开发,提升用户体验和系统性能。

weixin_28365523的博客 691

原码 反码 补码

原码 反码 补码 原码: 原码就是将一个数转换为二进制,例如十进制的23转换为二进制数为00010111,而原码则是在这个数的二进制基础上变化,左边第一位则为符号位,如果该数字为正数,则符号位为0,如果该数字为负数,则符号位为1。 例如: 10的原码则为 00010111 而-10的原码则为 10010111 反码: 反码计算方式为:符号位不变,数值位分别"按位取...

我的博客 3312

别再为10G UDP发愁了!手把手教你用Xilinx 10G/25G Ethernet Subsystem IP核搭建FPGA网络栈(附12套工程源码)

本文详细介绍了基于Xilinx UltraScale架构的FPGA网络栈开发,重点讲解了10G/25G Ethernet Subsystem IP核的应用实践。通过手把手教程和12套工程源码,帮助开发者解决10G UDP通信中的物理层接口、协议栈实现和系统集成等核心挑战,实现高性能FPGA网络栈搭建。

weixin_42522575的博客 364

领域驱动设计整理——实体和值对象设计

实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的关注点从数据的属性和表的关联转化到了富有行为的领域概念上。 实体是具有可变性的,这是一个和值对象比较明显的区分,也即实体是可以持续得变化,持续得修改,并且具有唯一的标识。在设计实体的时候需要跳出CRUD的

马猴烧酒└(┐卍^o^)卍ドゥルルル~楪詩月「YUZURIHA SHIZUKI」 2万+

补码与位运算

补码与位运算1、补码 位运算主要包括按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、右移(>>)。由于位运算直接操作的是内存,运算速度相对较快,采取位运算能有效提升程序运行效率。(如用右移代替除以2操作,&1代替对2取余操作) 1、补码 计算机中的数据按补码形式存储,因此在进行位运算时,直接操作的是补码。正数的原码、反码和补码是其本身。......

LilyZJ的博客 2919

使用PostgreSQL构建高可用数据库集群

在现代企业级应用中,数据库的高可用性已成为业务连续性的核心要求。PostgreSQL作为一款功能强大的开源关系型数据库,其高可用架构的设计直接影响着系统的稳定性和可靠性。

九天的专栏 1257

原码、补码、反码以及位运算

原码、补码、反码的概念以及位运算原码、补码、反码的概念以及位运算1 原码、补码、反码1.1 原码组成1.2 反码1.3 补码1.4 总结2 位运算2.1 按位与&2.2 按位或|2.3 按位异或^2.4 右移运算>>2.5 左移运算<< 原码、补码、反码的概念以及位运算 1 原码、补码、反码 1.1 原码组成 机器数一个数在计算机中的二进制表示形式,器数是带符号的,...

qq122516902的博客 5132

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2151

27、振动信号实时并行处理与风力发电机模型鲁棒控制设计

本文探讨了振动信号实时并行处理与风力发电机模型鲁棒控制设计两大核心技术。在振动信号处理方面,提出基于FPGA、RT和PC三级架构的并行采集与处理系统,实现高效、实时的振动分析,适用于电机状态监测与预测性维护。在风力发电控制方面,研究风力农场布局优化(WFLO)问题,比较九种多目标元启发式算法性能,并提出基于扰动观察法的最大功率点跟踪(MPPT)控制策略,提升发电效率与系统鲁棒性。研究成果为工业设备智能监控与可再生能源优化提供了有效技术路径。

sunny的博客 72

原码、反码、补码、位运算

比如n=8四位二进制表示为(1 0 0 0),取反后是(0 1 1 1),再加1后是(1 0 0 0)。比如8位的有符号整数-4(1 1 1 1 1 1 0 0),右移两位 1 1 1 1 1 1 0 0 >> 2 = 1 1 1 1 1 1 1 1。比如8位无符号整数4(0 0 0 0 0 1 0 0),右移两位 0 0 0 0 0 1 0 0 >> 2 = 0 0 0 0 0 0 0 1。对于0还需要区分+0(8位原码为0 0 0 0 0 0 0 0)和-0(8位原码为1 0 0 0 0 0 0 0)

qq_42838399的博客 1234

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

原码,反码,补码 以及 位运算

原码反码补码

jiandan1127的博客 3062

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

原码、反码、补码以及位运算学习

原码 原码是一种计算机中对数字的二进制定点表示方法。 原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。(百度百科) 仅用八位来表示,6的原码是: 00000110 -6的原码是: 10000110 优点 简单直观 缺点 不能直接参加运算 引出问题:为什么不能直接参加运算? 因原码需要用单独的一个bit来表示符号位,运算时计算机需要识别原码是正数还是负数,然后再进行相应的运算,效率不高,如果想要符号位也参

夜里想好千条路,明朝依旧起床卖豆腐。 2492

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java 原码、补码、反码、位运算详解

java 原码、反码、补码详解

weixin_65584018的博客 1895

位运算(按位与、按位或、异或、取反)以及原码、反码、补码

由于[1111_1111]+[0000_0001]=[0000_0000],所以在负数反码的基础上+1就可以解决反码中跨0的误差问题,同时不会对负数与它对应的二进制反码的同步递增产生影响,所以在反码的基础上+1就完美的解决了符号参与预算的问题,这就是补码为什么是在负数反码的基础上+1的由来。用第一位表示符号,其余位表示值。从上面的原码表中可以看见左边每增加一个二进制单位对应的真数是递减的,而右边每增加一个二进制单位对应的真数是递增的,所以对于原码来说,能满足正数的加法,但无法满足负数的加法。

番茄的博客 1万+

第十七天:原码、反码、补码与位运算

本文介绍了计算机中表示有符号整数的三种方法:原码、反码和补码。原码直观但运算复杂,反码改善0的表示问题但运算仍不便,补码成为标准方法,解决了运算问题并简化逻辑。文章还详细讲解了六种位运算(与、或、异或、取反、左移、右移)的运算规则、代码示例和应用场景,如数据加密、快速乘除法等。这些底层运算在计算机系统中具有重要作用,能提高程序效率。

岁岁长安 1830

二进制,位运算(原码、反码、补码)

目录 1 二进制 2 原码、反码、补码 3 位运算符 4 位运算符使用技巧 上回学习运算符时,漏了位运算符,因为位运算符理解起来稍微有点复杂,所以要单独写一篇~ 要理解按位运算符,要先了解计算机进行存储和计算的底层逻辑。 因此我们从最基础的二进制说起。 1 二进制 只要学过计算机,就不可能不知道二进制。 我们知道,十进制是逢十进一,譬如11,左边的1在十位上,代表10,右边的1在个位上,就是1。 把1502这个数字拆开看,就是有1个1000,5个100,0个10,2个1, [外链图片转存失败,源站可能有防盗

no_found的博客 2970

原码、反码、补码及位运算

原码、反码、补码及位运算

altezhi的博客 3940

原码反码补码,位运算

本文介绍了计算机中的原码、反码和补码表示方法,以及位运算规则。正数的三种码相同,负数的反码是原码符号位不变其余取反,补码为反码加1。重点讲解了五种位运算符:与(&)、或(|)、异或(^)、右移(>>)和左移(<<),并通过具体示例演示运算过程,如2&4=0、2|4=6、-2^4=-6等。最后给出代码示例说明移位运算结果,强调计算机运算时都使用补码形式。

T18357726647的博客 428

Java-原码、反码、补码、位运算

位运算 > >> & | ^ ~

weixin_37607613的博客 2862
上一篇: LinkedList中add,addLast,offer,pollLast,removeLast等区别
下一篇: HashMap数据结构剖析(JDK8红黑树)拓展到Integer自动拆装箱及缓存
老邓CODING
博客等级 码龄8年 9粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值