原码、反码、补码、算术左移、逻辑左移、算术右移、逻辑右移

原码、反码、补码、算术左移、逻辑左移、算术右移、逻辑右移

位运算的相关操作,主要包括按位“与”、“或”、“异或”、“取反”四种操作。

按位与运算(&):这个运算是比较两个二进制数每一位是否都为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>

posted @   付时凡  阅读(686)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示