逻辑运算与移位运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逻辑运算与移位运算相关的知识,希望对你有一定的参考价值。

一、布尔代数:简单理解就是用数字0和1(即:二进制位)代表逻辑值真和假来进行逻辑推理基本原则的研究。是逻辑电路和逻辑运算的数学基础。

二、逻辑运算符:与、或、非、异或

  一元运算符:非(NOT),只有一个操作数

  二元运算符:与(AND)、或(OR)和异或(XOR),有两个操作数

  逻辑运算符真值表

  技术分享

  •   NOT:对于输入x取反即可
  •   AND:对于输入x和y只有都为1是x&y才为1,否则都为0,如果能确定第一个操作数是0,则无需计算第二个操作数,结果必然为0
  •   OR:表示结果不是x就是y,两者二选一。对于操作数x和y,只要有一个为1,则x|y不然为1,如果能确定第一个操作数是1,则无需计算第二个操作数,结果不然是1
  •   XOR:表示结果要么x,要么是y或者同时包含x和y,对于操作数x和y,如果相同则结果为0,不同则为1(另一种理解:如果输入中有一位为1,结果是另输入相应为的相反)。

三、位级逻辑运算

  对二进制位进行逻辑运算,参照【逻辑运算真值表】

四、位模式逻辑运算

  位模式:位序列或者可以把一串位看做向量(位向量),一般将固定长度的位向量用字节的倍数表示

  1)、NOT

  技术分享

  2)、AND

  技术分享

  3)、OR

  技术分享

  4)、XOR

  技术分享

  位模式逻辑运算的几个应用

  1)、取反

  NOT运算符可以将位模式的每个为取反,0变1,1变0

  2)、复位指定位(置0)

  AND运算符对输出使用被称作掩码的相同位操作数复位指定位,将掩码的指定位设置为0即可(其它位为1),这是AND操作将把输入复位。

  技术分享

  3)、置位指定位(置1)

  OR运算符对指定位置1,指定位掩码位1(其它位为0)

  技术分享

  4)、翻转指定位

  XOR运算符对指定位使用掩码(指定位为1,其它位为0)进行翻转

  技术分享

五、移位运算

  技术分享

  •   关于移位运算符

  移位运算分为左移位和右移位,分别用<<和>>表示

  如何表示:

  有操作数x(x是w为表示的数字),需要向左或向右移动k位(0<k<w,k是整数)

  左移位:x<<k

  右移位:x>>k

  1)、逻辑移位:针对无符号整数(如果是有符号数,则逻辑移位可能改变这些数的符号)

  x<<k,丢弃最左位k个位,最右位补足k个0,相当于x成语2k

  x>>k,丢弃最右位k个位,最左位补足k个0,相当于x除以2k(取整数)

  例如:

  25<<1=(11001)2<<1=(110010)2=50

  25>>1=(11001)2>>1=(01100)2=12

  2)、循环移位

  也称位旋转移位运算,位首位相接,没有丢弃或增加位

  左移位:最左位被推出边界,回环到最右位

  右移位:最右位被推出边界,回环到最左位

  例如:

  55<<1=(110111)2<<1=(101111)2=47

  55>>1=(110111)2>>1=(111011)2=59

  3)、算数移位

  针对有符号位的整数(二进制用补码表示的负整数)。

  x<<k,相当于x乘以2k,丢弃符号位(最左位),接受它的右边为作为符号位,最右位用0补足,如果新符号位与原符号位相同则转换成功,否则转换失败,结果非法。

  x>>k,相当于x乘以2k,保留符号位,丢弃最右位,最左位用原符号位补足即可

  •   -25>>3实例

  技术分享

  技术分享

  •   -88<<4实例

  技术分享

  技术分享

 

以上是关于逻辑运算与移位运算的主要内容,如果未能解决你的问题,请参考以下文章

Java 位运算(移位位与或异或非)与逻辑运算

二进制算术移位和逻辑移位运算,及移位运算对数据的影响(详解及过程推导)

(计算机组成原理)第二章数据的表示和运算-第二节3:定点数的移位运算(算数移位逻辑移位和循环移位)

8086指令系统 逻辑运算和移位运算指令

计算机组成原理 王道考研2021 第二章:数据的表示和运算 -- 定点数的运算(移位加减运算溢出判断符号扩展)

常见的关系运算符(移位运算符)