位运算

[算法]——常见位运算总结 本文介绍了常见的位运算及其组合,并辅以例题帮助读者更好地理解和应用 阅读详情

计算机中数据的表示方法

二进制计数的缺点:书写太长,容易出错,一般计算机的数据位数都是4的整数倍,所以,在计算机里通常采用16进制计数法。用数字可以表示各种信息,计算机里只有数值,当你在内存中看到一个数值时,这个数值可能代表各种意义,生活中的数值也可以代表其他意义,如1234可以代表密码,存款额,电报信息,根据上下线索,我们就能够知道这数值代表的意义。


原码、反码和补码

原码
         将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。
            为了简单起见,我们用1个字节来表示一个整数。
            +7的原码为: 00000111
             -7的原码为: 10000111
    问题:
           +0的原码为:             00000000
            -0的原码为:             10000000

反码
           一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。
            为了简单起见,我们用1个字节来表示一个整数。
            +7的反码为: 00000111
             -7的反码为: 11111000
    问题:
           +0的反码为:             00000000
            -0的反码为:             11111111

补码 
    利用溢出,我们可以将减法变成加法。
    对于十进制数,如果从9得到结果5,可以用减法:
         9-4=5
      因为4+6=10,我们将6作为4的补数,将上式的减法改写为加法:
         9+6=15
      去掉高位1(也就是减去10),得到结果5。


      对于16进制数,如果从C得到结果5,可以用减法:
         C-7=5
      因为7+9=16,我们将9作为7的补数,将上式的减法改写为加法:
         C+9=15
      去掉高位1(也就是减去16),得到结果5。

补码
           在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为:
           1 00000000
    进位1被丢弃。




补码
      已知一个负数的补码,将其转换为十进制数,步骤:
      1、先对各位取反;
      2、将其转换为十进制数;
      3、加上负号,再减去1。
      例如:
      11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。



位运算符

为了方便对二进制位进行操作,Java给我们提供了四个二进制位操作符:
&           按位与
|            按位或
^            按位异或
~     按位取反


按位与
             一个房间里有两个开关控制房间的灯的明暗。当两个开关同时处于打开状态时,灯才能亮。
      开关1              开关2               灯的状态
        关                         关                              暗
      开                          关                              暗
      关                          开                              暗
      开                          开                              亮


按位与
           01101101
           00110111
           00100101
结论:按位与,只有壹(1)壹(1)为1。


按位或
            一个房间里有两个开关控制房间的灯的明暗。当任何一个开关处于打开状态时,灯就能亮。
    开关1              开关2               灯的状态
        关                         关                              暗
      开                          关                              亮
      关                          开                              亮
      开                          开                              亮

按位或
           01101101
           00110111
           01111111
结论:按位或,只有零(0)零(0)为0。


按位异或
            一个房间里有两个开关控制房间的灯的明暗。当两个开关处于不同状态时,灯就能亮。
   开关1              开关2               灯的状态
        关                         关                              暗
      开                          关                              亮
      关                          开                              亮
      开                          开                              暗

按位异或
           01101101
           00110111
           01011010
    结论:按位异或,只有零(0)壹(1)或壹(1)零(0)为1。



按位取反
       ~  01101101
            10010010
   结论:对二进制数按位取反,即0变成1,1变成0。




移位运算符


Java中有三个移位运算符
左移:<<
带符号右移:>>
无符号右移:>>>


数            x         x<<2                 x>>2              x>>>2
17      00010001    00 01000100      00000100 01     00000100 01
-17     11101111    11 10111100      11111011 11     00111011 11



保姆级教程:手把手配置MAX9295/9296 GMSL2-CSI2链路,搞定4LAN/1LAN模式与常见调试 本文提供MAX9295/9296 GMSL2-CSI2链路的详细配置教程,涵盖4LAN和1LAN模式的硬件连接、寄存器配置及调试技巧。通过实战案例和代码示例,帮助开发者快速实现高带宽视频传输,解决常见问题如信号同步和功耗优化,适用于车载摄像头和机器人视觉系统开发。 阅读详情

相关推荐

Gromacs基础教程一:入门建议

本系列教程针对的群体:非计算化学专业,而是偏生物方向的、有少量分子动力学模拟需求的人群。

m0_67843839的博客 8572

位运算全面总结,关于位运算看这篇就够了

关于位运算的奇技淫巧,看完这篇你就能灵活使用位运算了。

pursuit的博客 12万+

Windows服务器XMRig挖矿病毒深度清除实战指南

XMRig是一种广泛用于Monero(XMR)加密货币挖矿的开源工具,其在Windows环境中的持久化机制已远超传统木马范畴,融合WMI事件订阅、服务伪装、PowerShell无文件执行与注册表隐写等多重反检测技术。理解其基于行为而非特征的生存逻辑,是实现有效检测与根除的前提。该技术具备强隐蔽性、高自愈性与网络通信合法化特征,常见于RDP弱口令爆破、SMB共享泄露及PowerShell远程执行等非漏洞类入侵场景。本文聚焦Windows原生命令与Sysinternals工具链,提供覆盖进程定位、WMI清理、服

weixin_30535843的博客 730

说一说位运算

位运算是什么?‘&’、 ‘|’ 、‘^’、‘~’这些符号是啥意思?快来看看位运算的基础知识吧,文末链接有进阶,学习更快乐!

Sdom_L的博客 6053

1.Fay-UE5数字人工程导入(UE数字人系统教程)

ue5数字人系列教程(含源文件工程)

1万+

【网络安全】Centos7安装杀毒软件----ClamAV

Clam AntiVirus是一个Linux系统上使用的反病毒软件包。主要应用于邮件服务器,采用多线程后台操作,可以自动升级病毒库。

你在看屏幕的同时,屏幕也在注视着你 8828

【优选算法 & 位运算】位运算算法入门详解:位运算小专题

【优选算法 & 位运算】位运算算法入门小专题:判定字符是否唯一丢失的数字;两整数之和;只出现一次的数字Ⅱ;消失的两个数字;

OuO-1 的博客 3147

RC正弦波振荡电路实验全解析:如何通过调节电容电阻改变输出频率

本文深入解析RC正弦波振荡电路,重点阐述如何通过调节电容和电阻来精确改变输出频率。文章从文氏桥振荡电路的核心原理出发,详细介绍了电容粗调频段与电阻微调频率的实操策略,并分析了元件误差、寄生参数等对实测频率的影响,为电路设计与调试提供了从理论到实践的完整指南。

yhn456789的博客 1113

位运算各种方法总结

位运算1、按位与2、按位或3、按位取反4、按位异或5、按位同或6、左移7、带符号右移8、无符号右移9、python实现各种位运算操作 \quad \quad现代计算机中,几乎都是二进制计算机(三进制计算机仅有少量),所有的数据都以二进制的形式存储在设备中。位运算就是直接对整数在内存中的二进制位进行操作。 \quad \quad需要注意,位运算是针对 二进制 的运算,对每一个位进行布尔运算操作。所以 手动 进行 位运算计算 时,需要将数转换成二进制的表示形式,再进行计算。 1、按位与 \quad \quad只

weixin_45666566的博客 7959

PyTorch多机训练Loss不一致问题排查指南:基于算子级一致性验证

比较二次训练过程中所有算子的误差,定位存在一致性问题的pytorch算子

Hi20240217的博客 1157

告别理论!手把手教你用Patran/Nastran搞定机翼颤振分析(附完整模型文件)

本文提供了一份详细的机翼颤振分析实战指南,使用Patran/Nastran软件从零开始构建完整分析模型。涵盖几何建模、网格划分、模态分析到气动弹性耦合的全流程,特别适合航空航天领域工程师学习颤振分析技术。教程包含完整模型文件和实用脚本,帮助读者快速掌握这一关键飞行器设计技能。

weixin_30879169的博客 538

位运算的总结

这里我们运用集合与集合的思想,n ,k为两个不同的集合,如果可以使 n 修改为 k,我们是从 n 中去掉元素使其等于 k,那么 k 应该为 n 的子集。要删除最小的元素即为删除最右边的 1。这个题目和之前的类似,只是多了一个可以增加元素的操作,所以仍然是按位异或得到集合 s,这个集合包含 state 中独有的 (需要删除的元素) 和 goal 中独有的 (需要添加的元素)这里是要取两个集合的交集,我们可以用 set 来去重,把两个数组中的元素均存入 set 中,然后减去 set 的大小即为重复元素的数量。

a140781的博客 1714

虚拟化 之三 详解 ARM 平台 jailhouse 的移植适配、构建及使用(飞腾派)

本文将探索学习通过在飞腾官方提供的 Buildroot 构建系统移植适配 openEuler 内核以及 jailhouse 源码 Package 进而直接构建一个适用于飞腾派开发板的带有 jailhouse 的 openEuler 发行版。

技术干货 1002

位运算及其应用

1.位运算优势以及优先级2.位运算和逻辑运算符的对比3.位运算的应用(获取最后一位,快速取模,交换两数,幂运算等等)

zsgmer的博客 2724

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

位运算(1)_常见位运算总结

新的算法专栏出炉--位运算,位运算(1)_常见位运算总结,感兴趣的宝子们千万不要错过哦!!! 下篇让初步掌握位运算的五道题

wer24_25的博客 1783

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

位运算算法

于是我们可以像下面这样,一个比特位代表一个字母,这样子我们只要26个比特位就能表示出所有的小写字母,我们让0代表该字母没出现过,1代表该字符出现过。然后,当我们对这个取反后的数加1时,会从最低位(最右侧)开始,遇到第一个0时停止进位,并将这个0及其之后的所有位都设置为1,而之前的所有位都保持不变(但由于是取反后的数,所以它们实际上是原数中对应位置的相反值)。假设我们有一个数 n = 29,并且我们想知道它的二进制表示中的第 x = 3 位(从右向左,从0开始编号)是0还是1。位(从0开始计数)修改成1。

2301_80224556的博客 2029

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

简记位运算

《位运算小结》   位运算的重要程度从各种课本上就能感受到,毕竟计算机只认识二进制,在工作当中位运算也是能够提高效率的利器。比如汉明距离就用到了异或运算以及查找位1的个数相关的位运算,如果不了解这些而单纯使用循环的话,那效率就大打折扣了。 Key Words:位运算、与、或、异或、取反、位移运算 Beijing, 2020 作者:RaySue Code: Agile Pioneer   位运算   计算机内存中都是以二进制形式存储的。位运算就是直接对整数在内存中的二进制位进行操作。由.

雄关漫道真如铁 而今迈步从头越 4520

详解位运算

位运算是基于整数的二进制表示进行的运算。由于计算机内部就是以二进制来存储数据,位运算是相当快的。它直接对整数的二进制位进行操作。位运算符作用于位,并根据每一位是0还是1来产生结果。基本的位运算共 6 种,分别为按位与(AND)、按位或 (OR)、按位异或 (XOR)、按位取反(NOT)、左移和右移。

weixin_73964795的博客 2113

编程基础:位运算01,位运算引言

编程基础:位运算

2401_82825368的博客 1409

位运算总结

文章目录位运算基础1 技巧一:用于消去x的最后一位的11.1 应用一:用$O(1)$时间复杂度检测整数n是否是2的幂次1.2 应用二:计算在一个32位的整数的二进制表示中有多少个11.3 应用三:将整数A转换为B,需要改变多少个bit位2 技巧二:使用二进制进行子集枚举2.1 应用一:给定一个含不同整数的集合,返回其所有的子集3 不用任何比较判断找出两个数较大的数4 只用位运算不用算术运算实现整数...

会飞的鱼的博客 1973

【算法详解】位运算

在计算机内部,数是以「二进制(Binary)」的形式来进行存储。位运算就是直接对数的二进制进行计算操作,在程序中使用位运算进行操作,会大大提高程序的性能。

Z1tai的博客 1901

python之位运算

位运算,计算机内所有的数都以二进制存储,位运算就是对二进制位的操作 位运算符 说明 << 按位左移,左移n位相当于乘以2的n次方 >> 按位右移 ,左移n位相当于除以2的n次方 & 按位与,二进制位数同且为1结果位为1 l 按位或 ,二进制位数或有1结果位为1 ^ 按位异或 ,二进制位数不同结果位为1 ~ 按位取反,二进制位0和1...

GrofChen的博客 1万+

学习-Java位运算之逻辑位运算

第1关:学习-Java位运算之逻辑位运算 过关任务 参考答案 评论 任务描述 相关知识 位运算 逻辑位运算 与 & 位运算符 或 | 位运算符 非 ~ 位运算符 异或 ^ 位运算符 编程要求 测试说明 任务描述 本关任务:根据输入获取的位运算符和运算数完成相应运算。键盘第一次输入的值为四种位运算符的一种,类型为字符型;第二次输入的是变量 a 的值,类型为 int 型;判断第一次输入的为何种位运算符,计算变量 a 使用该运算符与常量 10 的值,如果

aiains的博客 1803

HashMap中的位运算

Java 8 中 HashMap 的实现使用了很多位操作来进行优化。本文将详细介绍每种位操作优化的原理及作用。 Java 中的位运算 位操作包含:与、或、非、异或 移位操作包含:左移、右移、无符号右移 HashMap 中的位运算 计算哈希桶索引 hashCode方法优化 指定初始化容量 扩容方法里的位运算 总结回顾 ...

GitChat 2774
上一篇: Java的起源
下一篇: 1 java String 字符串相关
hackq
博客等级 码龄20年 19粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值