缩位运算符(也有称为归约运算符)
(2012-07-24 14:56:09)
标签:
缩减运算符杂谈 |
分类: 不敢说是技术 |
缩位运算符(也有称为归约运算符),单目运算符,常用的有&、|、^.
在夏闻宇老师的《verilog数字系统设计》中,对缩减运算符的描述是这样的:
缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其运算过程不同。位运算是对操作数的相应位进行与或非运算,操作数是几位数则运算结果也是几位数。而缩减运算则不同,缩减运算是对单个操作数进行或与非递推运算,最后的运算结果是一位的二进制数。缩减运算的具体运算过程是这样的:第一步先将操作数的第一位与第二位进行或与非运算,第二步将运算结果与第三位进行或与非运算,依次类推,直至最后一位。
例如:reg [3:0] B;
reg C;
C = &B;
相当于:
C =( (B[0]&B[1]) & B[2] ) & B[3];
描述和例子都是易懂的,看的时候也就点点头过去了,但某天突然想到一个问题,“非”怎么进行缩减运算呢?这厮本身就是一个单目运算符啊,所以各种百度。引用的人很多,貌似注意到这一点的人很少啊···然后在一个论坛上发现了有人有同样的问题,有大牛列举了国外教材证明在缩减运算符里是没有“非”运算的。另外,极重要的“异或”运算夏老师的书中也没有提到。
原帖地址:http://forum.eepw.com.cn/thread/182573/1
所以,读书要思考啊,大牛写的书也可能会出点差错的!
如果有时间和精力,把缩减运算符的应用整理一下,作为硬件语言独有的运算符,网上没找到有系统介绍的资料。
在夏闻宇老师的《verilog数字系统设计》中,对缩减运算符的描述是这样的:
缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其运算过程不同。位运算是对操作数的相应位进行与或非运算,操作数是几位数则运算结果也是几位数。而缩减运算则不同,缩减运算是对单个操作数进行或与非递推运算,最后的运算结果是一位的二进制数。缩减运算的具体运算过程是这样的:第一步先将操作数的第一位与第二位进行或与非运算,第二步将运算结果与第三位进行或与非运算,依次类推,直至最后一位。
例如:reg [3:0] B;
reg C;
C = &B;
相当于:
C =( (B[0]&B[1]) & B[2] ) & B[3];
描述和例子都是易懂的,看的时候也就点点头过去了,但某天突然想到一个问题,“非”怎么进行缩减运算呢?这厮本身就是一个单目运算符啊,所以各种百度。引用的人很多,貌似注意到这一点的人很少啊···然后在一个论坛上发现了有人有同样的问题,有大牛列举了国外教材证明在缩减运算符里是没有“非”运算的。另外,极重要的“异或”运算夏老师的书中也没有提到。
原帖地址:http://forum.eepw.com.cn/thread/182573/1
所以,读书要思考啊,大牛写的书也可能会出点差错的!
如果有时间和精力,把缩减运算符的应用整理一下,作为硬件语言独有的运算符,网上没找到有系统介绍的资料。
前一篇:三段式状态机的思维陷阱
后一篇:异或的性质和运算(转)