异或 ^ 的几个作用

一、交换两个整数的值而不必用第三个参数
a = 9;
b = 11;
a=a^b; 1001^1011=0010
b=b^a; 1011^0010=1001
a=a^b; 0010^1001=1011
a = 11;
b = 9;
二、奇偶判断
^a操作就是将a中的每一位按位逐一进行异或 , 例如a=4'b1010 , 则b=1^0^1^0=0 , 由此可以判断a中为1的位数是奇数还是偶数 , 是一个便捷的操作 。
三、格雷码()
格雷码()是由贝尔实验室的在1940年提出 , 用于在PCM()方法传送讯号时防止出错 , 并于1953年三月十七日取得美国专利 。格雷码是一个数列集合 , 相邻两数间只有一个位元改变 , 为无权数码 , 且格雷码的顺序不是唯一的 。
直接排列
以二进制为0值的格雷码为第零项 , 第一项改变最右边的位元 , 第二项改变右起第一个为1的位元的左边位元 , 第三、四项方法同第一、二项 , 如此反覆 , 即可排列出n个位元的格雷码 。
1、自然二进制码转换成二进制格雷码
自然二进制码转换成二进制格雷码 , 其法则是保留自然二进制码的最高位作为格雷码的最高位 , 而次高位格雷码为二进制码的高位与次高位相异或 , 而格雷码其余各位与次高位的求法相类似 。

异或 ^ 的几个作用

文章插图

异或 ^ 的几个作用

文章插图
2、二进制格雷码转换成自然二进制码
二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位 , 而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或 , 而自然二进制码的其余各位与次高位自然二进制码的求法相类似 。
异或 ^ 的几个作用

文章插图
二进制数转格雷码
(假设以二进制为0的值做为格雷码的0)
格雷码第n位=二进制码第(n+1)位+二进制码第n位 。不必理会进制 。
代码:gray=(>>1)^;
格雷码转二进制数
二进制码第n位=二进制码第(n+1)位+格雷码第n位 。因为二进制码和格雷码皆有相同位数 , 所以二进制码可从最高位的左边位元取0 , 以进行计算 。
代码://------假设 reg [n-1] gray,;
i;
for(i=0;i>i)//gray移位后,自身按位异或
放一段代码这 , 用于参考:
/*Logic tointo Gray codedisin theCode.
*/
();
;
;
reg[5:0],,,;
,;
/*block toclock and reset */
clk =0;rstn =0;# =1;
【异或 ^ 的几个作用】#10clk =!clk;
/*Logic forthe data andthefordata */
@( )
begin
if(!rstn)begin