0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是按位运算符

汽车电子技术 来源:OpenFPGA 作者:碎碎思 2023-02-09 15:44 次阅读

数字硬件建模SystemVerilog-按位运算符

图片

经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。

马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~

图片

介绍

(按)位运算符(Bitwise operators)

位运算符一次执行一位操作,从最右边的位(最低有效位)向最左边的位(最高有效位)移动。表5-3列出了按位运算符功能。

表5-3:RTL建模的位运算符| 运算符 | 示例用法 | 描述 |

| ---------- | ---------- | ---------------------------- |

| ~ | ~m | 将m(1的补码)的每一位反转 |

| & | m&n | m和n的每一位相与(AND) |

| ^ | m ^ n | m与n的每一位相异或(XOR) |

| ^ 或者 ^ | m ^~n | m和n的每一位相同或 |

| I | mIn | m和n的每一位相或(OR) |

(I代表 | - 或操作)

没有位NAND或NOR运算符。NAND或NOR操作是分别反转AND或OR操作的结果,如~(m&n)。需要括号,以便先执行AND运算。

位运算要求两个操作数的向量大小相同。在执行操作之前,较小的操作数将扩展以匹配较大操作数的大小。

(按)位反转

按位反转(Bitwise inversion.)。位反转运算符将其单个操作数的每一位反转,从右向左操作,结果是操作数值的一个补数。位反转运算符是X-pessimistic-反转X或Z值的结果始终是X。表5-4显示了位反转的真值表。表中的结果针对操作数的每一位。

表5-4:位反转真值表| ~ | 结果 |

| --- | ------ |

| 0 | 1 |

| 1 | 0 |

| X | X |

| Z | X |

位反转操作的一个示例结果是:

图片

(按)位AND

按位和(Bitwise AND)。位AND运算符对第一个操作数的每一位与第二个操作数中的对应位进行布尔AND运算,从右到左运算。位AND运算符是X-optimistic:0与任何值的AND运算都将得到0。表5-5显示了位AND的真值表。表中的结果针对两个操作数的每一位。

表5-5:位AND真值表图片

位AND运算的一些示例结果如下:

图片

(按)位OR

按位或(Bitwise OR)。位OR运算符对第一个操作数的每一位与第二个操作数中的对应位进行布尔OR运算,从右向左进行运算。位OR运算符是X-optimistic-与任何值进行OR运算结果都是1。表5-6显示了位OR的真值表。

表5-6:位OR真值表图片

按位OR运算的一些结果示例如下:

图片

图片

(按)位XOR

按位异或(Bitwise XOR)。位XOR运算符对第一个操作数的每一位与第二个操作数的对应位进行布尔异或XOR运算,从右到左进行运算。按位异或运算符为X-pessimistic——对X或Z值进行异或运算的结果始终为X。表5-7显示了按位异或的真值表。

表5-7:按位异或真值表图片

按位异或运算的一些示例结果如下:

图片

(按)位XNOR

按位XNOR(Bitwise XNOR)。位XNOR运算符对第一个操作数的每一位与第二个操作数的对应位进行布尔XNOR运算,从右到左进行运算。位XNOR运算符为X-pessimistic ——对X或Z值进行XNOR运算的结果为X。表5-8显示了按位XNOR的真值表。

表5-8:按位XNOR真值表图片

按位XNOR运算的一些示例结果如下:

图片

示例5-5说明了一个利用按位运算符的小型RTL模型。

示例5-5:使用按位运算符:多路N位宽和/异或操作

//`begin_keywords "1800-2012" // use SystemVerilog-2012 keywords

// User-defined type definitions
package definitions_pkg;
 typedef enum logic {AND_OP, XOR_OP} mode_t;
endpackage: definitions_pkg

// Multiplexed N-bit wide bitwise-AND or bitwise-XOR operation
module and_xor
import definitions_pkg::*;
#(parameter N = 4)            // op size (default 8-bits)
(input  mode_t        mode,   // 1-bit enumerated input
input  logic [N-1:0] a, b,   // scalable input size
output logic [N-1:0] result  // scalable output size
);
 timeunit 1ns; timeprecision 1ns;

 always_comb
   case (mode)
     AND_OP: result = a & b;
     XOR_OP: result = a ^ b;
   endcase
endmodule: and_xor
//`end_keywords

图5-5显示了示例5-5中的RTL模型综合结果,如上一节前面所述,综合创建的实现可能受到多个因素的影响,包括:目标设备、与运算符一起使用的任何其他运算符或编程语句、使用的综合编译器以及指定的综合选项和约束。

<center>图5-5:示例5-5的综合结果:按位AND和OR运算center>

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NAND
    +关注

    关注

    16

    文章

    1543

    浏览量

    134792
  • 运算符
    +关注

    关注

    0

    文章

    163

    浏览量

    10946
  • and
    and
    +关注

    关注

    0

    文章

    30

    浏览量

    7080
收藏 人收藏

    评论

    相关推荐

    C语言基础知识(4)--运算符

    C语言中,运算符包括有算术运算符、关系运算符、逻辑运算符和位运算
    的头像 发表于 06-15 09:38 2229次阅读

    C语言运算符的使用方法

    详细介绍了C语言表达式、算术运算符、赋值运算符、关系运算符、条件结构、逻辑运算符、位运算符的语法和使用方法,并讨论了
    发表于 11-02 11:30 507次阅读
    C语言<b class='flag-5'>运算符</b>的使用方法

    STM32运算运算符学习记录

    学习过程中的一些疑问记录一下,方便自己复习(多数内容为转载,自己心得部分)STM32学习一、运算运算符(&)参加
    发表于 02-25 06:21

    matlab关系运算符

    matlab关系运算符 算数运算符 + 矩阵加  - 减  * 乘  .* 数组乘  ^ 矩阵乘方  .^ 数
    发表于 06-18 14:47 2763次阅读

    条件运算符是什么_条件运算符有哪些

    运算符优先级高于赋值、逗号运算符,低于其他运算符。关系运算实际上是逻辑比较运算,它是逻辑运算
    发表于 11-16 16:02 1.1w次阅读
    条件<b class='flag-5'>运算符</b>是什么_条件<b class='flag-5'>运算符</b>有哪些

    单目运算符是什么_单目运算符有哪些

    单目运算符是指运算所需变量为一个的运算符,又叫一元运算符,其中有逻辑非运算符:!、按位取反运算符
    的头像 发表于 02-24 15:42 6w次阅读
    单目<b class='flag-5'>运算符</b>是什么_单目<b class='flag-5'>运算符</b>有哪些

    C运算符的优先级和结合性详细解决

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。 C语言内置了丰富的运算符,大体可分为10类:算术运算符、关系运算符、逻辑运算符、位
    的头像 发表于 02-22 17:27 2946次阅读

    浅析MySQL中的各类运算符

    MySQL支持多种运算符,我们在写SQL脚本时经常会需要用到各种各样的运算符,这些运算符可以用来连接表达式,进而从数据库中查询我们需要的结果集等。这些类型主要包括算术运算符、比较
    的头像 发表于 05-03 17:41 1857次阅读
    浅析MySQL中的各类<b class='flag-5'>运算符</b>

    python运算符是什么

    python运算符 0. 什么是运算符? 本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子中,4和5被称为操作数,“+”号为运算符。 Python语言支持
    的头像 发表于 02-21 16:44 1892次阅读

    条件(三元)运算符

    RTL建模中广泛使用的运算符是条件运算符,也称为三元运算符,该运算符用于在两个表达式之间进行选择——表5-2列出了用于表示条件运算符的重点。
    的头像 发表于 02-09 15:42 1029次阅读
    条件(三元)<b class='flag-5'>运算符</b>

    什么是移位运算符

    移位运算符将向量的位向右或向左移位指定的次数。SystemVerilog具有按位和算术移位运算符
    的头像 发表于 02-09 15:49 1398次阅读
    什么是移位<b class='flag-5'>运算符</b>

    什么是逻辑运算符

    逻辑运算符对其操作数求值,并返回一个值,该值指示求值结果是真还是假(true or false)。例如,运算a && b测试a和b是否都为真,如果两个操作数都为真,则运算符返回真。否则,运算符
    的头像 发表于 02-09 15:55 1620次阅读
    什么是逻辑<b class='flag-5'>运算符</b>

    c语言运算符及例题

    C语言中逻辑运算符包含逻辑与&&、逻辑或||、逻辑非!三种。其中逻辑与&&是双目运算符,即需要运算符两边都要有表达式,且两边表达式都为真,此表达式才为真;逻辑||也是双目运算符,要求左
    发表于 02-16 16:14 0次下载

    Python中运算符介绍

      1. 逻辑运算符 逻辑运算符总结: 测试代码 a, b, c = 1, 2, 3 print((a 《 b) and (b 《 c)) print
    的头像 发表于 03-08 17:22 872次阅读

    Go语言运算符主要包括哪些呢?

    Go语言运算符主要包括:算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他
    的头像 发表于 05-26 15:54 601次阅读
    Go语言<b class='flag-5'>运算符</b>主要包括哪些呢?