标签:
1、位拼接运算必须指明位数,若不指明则隐含着为32位的二进制数【即整数】。 例:{1,0} = 64‘h00000001_00000000; 不等于2’b10;
2、%取模运算或者取余运算可以用“与”操作实现快速求余运算。
例如a%4,则可以化简为a&3.详解:5%4 = 4‘b0101%4‘b0100 //因为余数比4小,所以余数的bit2位及以上位都为0,只有bit0、bit1有数据,且与原来的数相 同
= 4‘b0101&4’b0011 = 4‘b0001 = 1;
故只要取模的数都是2^n的数都可以这样做。 好处是:位操作只需要一个指令周期即可完成,而大部分的C编译器的“%”运算均是调用子程序来完成的,代码长、执行速度慢。
3、%操作同普通操作不同,更为严格。要求:%两侧都要为整形数据,并且结果值的符号与采用取余运算里的第一个数的符号。
如果被取余的操作数为负数,取余数为正数,即b%a,b<0,a>0,a、b都为integer型,
则结果会怎样?用modelsim仿真结果如下:
可以看出商和余数的符号与被取余的数的符号相同。
4、幂的运算符号为**,而^的运算符号指 按位异或 或者 归约异或。
^按位异或:二元异或,有两个操作数位于两侧。如果某位为x或者z,则该位结果为x,否则相同为0,不同为1.
4‘b0110^4‘b1000 = 4‘b1110;
^归约异或:一元操作数,如果某个位的值为x或者Z,则结果为X,如果操作数中有偶数个1,则结果为0,否则为1;
^4’b0011 = 0;
^4‘b0001 = 1;
标签:
原文地址:http://www.cnblogs.com/fhyfhy/p/4601463.html