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

    文章

    1681

    浏览量

    136118
  • 运算符
    +关注

    关注

    0

    文章

    172

    浏览量

    11079
  • and
    and
    +关注

    关注

    0

    文章

    32

    浏览量

    7250
收藏 人收藏

    评论

    相关推荐

    数字硬件建模SystemVerilog-运算符

    经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符
    的头像 发表于 08-12 14:27 2594次阅读

    C语言 第2章 顺序结构 2-5-24 运算符

    C语言
    电子学习
    发布于 :2022年12月27日 19:22:01

    STC12C2052AD做的手机电池充电器程序

    优先级 右结合  ! 逻辑非运算符   ~ 取反运算符  ++ 自增运算符  -- 自减运算符
    发表于 03-14 09:10

    C语言优先级口诀

    的是取反运算符~,增减指的是自增和自减运算符++和--,富指的是负号运算符-,强指的是类型转换运算符
    发表于 03-22 09:18

    C语言入门经典(第四版)

    基本数据类型 553.1 运算符的优先级和相关性 553.2 运算符 573.2.1 移位运算符 583.2.2 使用
    发表于 06-11 12:58

    【通信专栏】附录一:STM32单片机C语言基础/逻辑运算/运算/结构体/宏定义 精选资料分享

    在单片机开发中,总有一些C语言基础知识是常常用到的而我们又不易掌握的,今天以STM32单片机为例,总结一下那些常用的C语言基础知识,例如逻辑运算符,结构体,宏定义以及运算符。逻辑
    发表于 07-21 08:28

    2.7 python运算符

    ;> a5>>> a -= 2>>> a34. Python运算符运算符是把数字看作二进制来进行计算的。Python中的
    发表于 02-21 16:43

    STM32运算运算符学习记录

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

    分享关于操作一些笔记

    分享关于操作一些笔记:一、操作简单介绍首先,以下是运算符:在嵌入式编程中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中
    发表于 02-25 08:01

    数字硬件建模SystemVerilog-归约运算符

    介绍归约运算符对单个操作数的所有执行运算,并返回标量(1)结果。表5-9列出了归约运算符。表5-9:RTL建模的归约
    发表于 10-20 15:03

    第八课 运算符和表达式(运算符)

    学过汇编的朋友都知道汇编对位的处理能力是很强的,但是单片机C语言也能对运算对象进行操作,从而使单片机C语言也能具有一定的对硬件直接进行操作的能力。
    发表于 11-22 12:50 668次阅读

    STM32学习

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

    C语言 | 嵌入式操作精华技巧汇总

    分享关于操作一些笔记:一、操作简单介绍首先,以下是运算符:在嵌入式编程中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中
    发表于 01-13 10:26 0次下载
    C语言 | 嵌入式<b class='flag-5'>位</b>操作精华技巧汇总

    什么是移位运算符

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

    Python中运算符介绍

    : print(“a《30”) if 4 《= a 《= 30: print(“1《=a《=10”) if 4 《= a a 《= 30”) 3. 运算符
    的头像 发表于 03-08 17:22 1111次阅读