常见的关系运算符(缩减运算符)

写在前面的话

缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其运算过程不同。位运算是对操作数的相应位进行与或非运算,操作数是几位数则运算结果也是几位数。而缩减运算则不同,缩减运算是对单个操作数进行与或非递推运算,最后的运算结果是一位的二进制数。缩减运算的具体运算过程是这样的:第一步先将操作数的第一位与第二位进行与或非运算,第二步将运算结果与第三位进行与或非运算,依次类推,直到最后一位。例如:

reg[3:0]B;

reg C;

C=&B;

相当于

C=((B[0]&B[1])&B[2])&B[3];

工程实例

下面,梦翼师兄给大家编写一个实例,通过仿真波形来验证运算结果是否如我们所说。可综合模块代码如下


/****************************************************

*   Engineer        :   梦翼师兄

*   QQ               :   761664056

*   The module function:缩减语句运算模块

*****************************************************/

01  module reduce(clk,rst_n,c);

02  input clk;//系统时钟输入

03  input rst_n;//系统复位

04

05  output reg c;//输出寄存器定义

06

07  reg [3:0]B;//内部寄存器定义

08

09  always@(posedge clk or negedge rst_n)

10      begin

11          if(!rst_n)

12              begin

13                  c<=0;

14                  B<=4‘b1111;

15              end

16          else

17              begin

18                  c<=&B;

19              end

20      end

21

22  endmodule

编写测试代码如下


/****************************************************

*   Engineer        :   梦翼师兄

*   QQ               :   761664056

*   The module function:缩减语句测试模块

*****************************************************/

01  `timescale 1ns/1ps

02  module tb;

03  reg clk;

04  reg rst_n;

05

06  wire c;

07

08  initial

09      begin

10          clk=0;

11          rst_n=0;

12          # 1000.1 rst_n=1;

13      end

14

15  always #10 clk=~clk;

16

17  reduce reduce(

18      .clk(clk),

19      .rst_n(rst_n),

20      .c(c)

21    );

22  endmodule

查看仿真波形如下:

通过该波形可以看出,当变量B的四个位全部为高时,由于是“逻辑与”的运算,所以最终输出的变量C为高电平。

那么如果我们在变量B中加入一个零,结果会如何呢?我们仿真如下:

可以看到,如果变量B中存在零,那么输出结果由于“逻辑与”会得到低电平。

原文地址:https://www.cnblogs.com/mengyi1989/p/11515976.html

时间: 2024-08-30 08:59:49

常见的关系运算符(缩减运算符)的相关文章

第二部分 关系与比较运算符 、 自增与自减运算符、条件逻辑运算符

关系与比较运算符: 等于:  = 大于:> 大于等于:>= 小于:< 小于等于:<= 不等于:!= 自增与自减运算符:运算符和位置 运算符:++和-- 位置: 前置:先计算,将计算后的结果赋给左侧 后置:先计算,将计算前的结果赋给左侧 条件逻辑运算符:与(&&).或(||).非(!)

javascript运算符——位运算符

× 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度极快,且合理使用能达到很好的效果.本文将介绍javascript中常常被忽视的运算符——位运算符 二进制表示 ECMAScript中的所有数值都以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值,而是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数 这种位数转换使得在对特

C++ Primer 学习笔记_28_操作符重载与转换(3)--成员函数的重载、覆盖与隐藏、类型转换运算符、*运算符重载、-&gt;运算符重载

C++ Primer 学习笔记_28_操作符重载与转换(3)--成员函数的重载.覆盖与隐藏.类型转换运算符.*运算符重载.->运算符重载 一.成员函数的重载.覆盖与隐藏 对于类层次的同名成员函数来说,有三种关系:重载.覆盖和隐藏,理清3种关系,有助于写出高质量的代码. 1.成员函数的重载 重载的概念相对简单,只有在同一类定义中的同名成员函数才存在重载关系,主要特点时函数的参数类型和数目有所不同:但不能出现函数参数的个数和类型均相同,仅仅依靠返回值类型不同来区分的函数,这和普通函数的重载是完全一致

运算符--&gt;位移运算符和一些其他运算符

移位运算符 移位运算符就是在二进制的基础上对数字进行平移.按照平移的方向和填充数字的规则分为三种:<<(左移).>>(带符号右移)和>>>(无符号右移).在移位运算时,byte.short 和 char 类型移位后的结果会变成 int 类型,对于 byte.short.char 和 int 进行移位时,规定实际移动的次数是移动次数和 32 的余数,也就是移位 33 次和移位 1 次得到的结果相同.移动 long 型的数值时,规定实际移动的次数是移动次数和 64 的

Python核心编程基础教程之Python运算符、运算符优先级、表达式简介--20150717

Python核心编程基础教程之Python运算符.运算符优先级.表达式简介 1.Python运算符与表达式: (1)认识Pyhton运算符1:什么是运算符 在Python运算中,有时候我们需要对一个或者多个数字或者一个或者多个字符串进行运算操作,*,+ (2)认识Pyhton运算符2:运算符有哪些以及运算符的使用方法 + :加 - :减 * :乘 / :除 ** :幂 < :小于 > :大于 != :不等于 // :求相除的整数部分 % :求相除的余数部分 & :按位与 | :按位或

c/c++ 重载运算符 函数调用运算符

重载运算符 函数调用运算符 把一个类的对象a,当成函数来使用,比如a(),所以需要重载operator()方法.重载了函数调用运算符的类的对象,就是函数对象了. 还有什么是函数对象呢??? lambda是函数对象 std::bind函数的返回值是函数对象 函数是函数对象 函数指针是函数对象 那函数对象是做什么用的呢??? 在标准算法中使用,比如std::(b, e, 函数对象); 标准库提供了下面的函数对象,它们都是模板形式的,它们放在functional头文件中 算术 关系 逻辑 plus<T

PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符

1.位运算符 位运算符用来对整型数的指定位进行置位,如果被操作数是字符串,则对该字符串的ASCII码值进行操作. 运算类型 运算符 举例 结果 按位与 & $a & $b 将$a 与 $b 中均为1的位置为1,其余置为0 按位或 | $a | $b 将$a 中为1 或$b中为1的位置为1,其余置为0 按位异或 ^ $a ^ $b 将$a 与 $b 中不同的位置为1,其余置为0 按位非 ~ ~ $a 将 $a 中为1的位置为0,为0的位置为1 左移 << $a <<

PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。

赋值运算符 PHP 赋值运算符用于向变量写值. PHP 中基础的赋值运算符是 "=". 这意味着右侧复制表达式会为左侧运算数设置值. ___________________________________________________________________________________________________ 四则运算符(+ - * / %) 四则运算符及数学运算符 数学运算符号有 4 种,包括:“+”(加).“-”(减)“*”(乘).“/”(除).这些都是人们通

Python新手学习基础之运算符——比较运算符

比较运算符 比较运算符可以使用比较两个值,所有的内建类型都支持比较运算.当用运算符比较两个值时,结果是一个逻辑值,不是True,就是False. 有一点要注意的是,不同的类型的比较方式不一样,数字类型会根据数字大小和正负进行比较,而字符串会根据字符串序列值进行比较等等. 在Python中有以下比较运算符: 现在我们就用比较运算符来完成一个小任务吧: 在x和y之间填入正确的比较运算符,来输出x和y的最大值,请主动思考哦~~~ 更多学习内容,就在码芽网http://www.mayacoder.com