缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其运算过程不同。位运算是对操作数的相应位进行与或非运算,操作数是几位数则运算结果也是几位数。而缩减运算则不同,缩减运算是对单个操作数进行或与非递推运算,最后的运算结果是一位的二进制数。缩减运算的具体运算过程是这样的:第一步先将操作数的第一位与第二位进行或与非运算,第二步将运算结果与第三位进行或与非运算,依次类推,直至最后一位。
例如:reg [3:0] B;
reg C;
C = &B;
相当于:
C =( (B[0]&B[1]) & B[2] ) & B[3];
描述和例子都是易懂的,看的时候也就点点头过去了,但某天突然想到一个问题,“非”怎么进行缩减运算呢?这厮本身就是一个单目运算符啊,所以各种百度。引用的人很多,貌似注意到这一点的人很少啊···然后在一个论坛上发现了有人有同样的问题,有大牛列举了国外教材证明在缩减运算符里是没有“非”运算的。另外,极重要的“异或”运算夏老师的书中也没有提到。