原码、反码、补码、算术左移、逻辑左移、算术右移、逻辑右移
原码、反码、补码、算术左移、逻辑左移、算术右移、逻辑右移
位运算的相关操作,主要包括按位“与”、“或”、“异或”、“取反”四种操作。
按位与运算(&):这个运算是比较两个二进制数每一位是否都为1。如果两个数在某一位上都是1,则结果的该位上为1,否则为0。例如,对于二进制数10101010和01000001,按位与的结果是00000000。
按位或运算(|):这个运算是比较两个二进制数每一位是否至少有一个为1。如果两个数在某一位上至少有一个是1,则结果的该位上为1,否则为0。例如,对于二进制数10101010和01000001,按位或的结果是11101011。
异或运算(^):这个运算是比较两个二进制数每一位是否不同。如果两个数在某一位上不同,则结果的该位上为1,否则为0。例如,对于二进制数10101010和01000001,异或的结果是11101011。
取反运算(~):这个运算是将一个二进制数的每一位取反。即,将每一位上的0变为1,将每一位上的1变为0。例如,对于二进制数10101010,取反的结果是01010101。
原码、反码和补码是计算机中数值的三种表示方法。它们都是为了能够将计算机中的二进制数表示成整数。下面我们逐一介绍这三种表示方法。
原码
是最直接的表示法,它直接将二进制数的最高位作为符号位(正数为0,负数为1),其余位表示数值。例如,整数+7的原码表示为二进制的 0100 0111。而-7的原码表示为二进制的 1100 0111。
反码
是在原码的基础上,符号位不变,其他各位取反得到的。例如,整数+7的反码表示仍然是二进制的 0100 0111,而-7的反码表示为二进制的 1011 1000。
正数的反码是其本身,而负数的反码是其符号位不变,其余各位取反。
补码
是在反码的基础上加一得到的。在补码表示法中,正数的补码与其原码相同,而负数的补码是其反码加一。例如,整数+7的补码表示仍然是二进制的 0100 0111,而-7的补码表示为二进制的 1011 1001。
在实际应用中,计算机内部使用的都是补码表示法。这是因为补码表示法可以使得加法和减法操作统一为加法操作,从而简化了计算机内部的运算器设计。同时,补码表示法还避免了正负零的混淆问题。
算术左移
即将二进制整体向左移,右边补0。
例如:01101100
算术左移后,结果为:11011000
逻辑左移
同算术左移。
算术右移
即将二进制整体右移,左边补上符号位。
例如:01101100
算术右移后,结果为:00110110
例如:11011001
算术右移后,结果为:11101100
逻辑右移
即将二进制整体右移,左边补0.
例如:01101100
逻辑右移后,结果为:00110110
参考链接
<�a href="https://zhuanlan.zhihu.com/p/371184302">�meQt㉡��{:g-N�v�Sx0e�x0�Sx - �wNN (zhihu.com)<�/a>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix