以下来自百度知道:
按位是二元操作符,是将操作符两边的操作数进行 操作符所规定的运算 , 例如:a & b(a=1,b=1),出来结果为1; 归约是一元操作符,是将操作数的几个bit位当成1bit的操作数进行操作符所规定的运算, 例如:a=4’b1101,则 &a= 1&1&0&1 =0 具体到程序综合的时候,综合工具会根据你操作数的多少来区分你的意图 以下来自: 归约操作符在单一操作数的所有位上操作,并产生1位结果。 归约操作符有: & (归约与) 如果存在位值为0, 那么结果为0;若如果存在位值为x或z,结果为x;否则结果为1。
~& (归约与非)
与归约操作符&相反。
(归约或) 如果存在位值为1,那么结果为1;如果存在位x或z,结果为x;否则结果为0。 ~ (归约或非) 与归约操作符相反。 ^ (归约异或) 如果存在位值为x或z,那么结果为x;否则如果操作数中有偶数个1, 结果为0;否则结果为1。 ~^ (归约异或非) 与归约操作符^正好相反。 如下所示。假定, A = 'b0110; B = 'b0100; 那么 : B 结果为1 & B 结果为0 ~ A 结果为1 归约异或操作符用于决定向量中是否有位为x。 假定, MyReg = 4'b01x0; 那么 : ^MyReg 结果为x 上述功能使用如下的if语句检测: if (^MyReg = = = 1'bx) $ display ("There is an unknown in the vector MyReg !") 注意逻辑相等(==)操作符不能用于比较; 逻辑相等操作符比较将只会产生结果x。全等操作符期望的结果为值1。