Java异或什么意思_0与0异或

Java异或什么意思_0与0异或异或^的几个作用一、交换两个整数的值而不必用第三个参数a=9;b=11;a=a^b;1001^1011=0010b=b^a;1011^0010=1001a=a^b;0010^1001=1011a=11;b=9;二、奇偶判断^a操作就是将a中的每一位按位逐一进行异或,例如a=4’b1010,则b=1^0^1^0=0,由此可以判断a中为1的位数是奇数还是偶数,是一个便捷的操作。三、格雷码(Graycode)格雷码(Graycode)是由贝…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

异或 ^ 的几个作用

一、交换两个整数的值而不必用第三个参数
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的位数是奇数还是偶数,是一个便捷的操作。

三、格雷码(Gray code)

    格雷码(Gray code)是由贝尔实验室的Frank Gray在1940年提出,用于在PCM(Pusle Code Modulation)方法传送讯号时防止出错,并于1953年三月十七日取得美国专利。格雷码是一个数列集合,相邻两数间只有一个位元改变,为无权数码,且格雷码的顺序不是唯一的。
直接排列
    以二进制为0值的格雷码为第零项,第一项改变最右边的位元,第二项改变右起第一个为1的位元的左边位元,第三、四项方法同第一、二项,如此反覆,即可排列出n个位元的格雷码。

1、自然二进制码转换成二进制格雷码
  自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。

Java异或什么意思_0与0异或

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

Java异或什么意思_0与0异或

    二进制数转格雷码
(假设以二进制为0的值做为格雷码的0)
格雷码第n位 = 二进制码第(n+1)位+二进制码第n位。不必理会进制。

     Verilog 代码:gray=(binary>>1)^binary;

     格雷码转二进制数
二进制码第n位 = 二进制码第(n+1)位+格雷码第n位。因为二进制码和格雷码皆有相同位数,所以二进制码可从最高位的左边位元取0,以进行计算。

      verilog 代码://——假设 reg [n-1] gray,binary;

             integer i;

             for(i=0;i<=n-1;i=i+1)

              binary[i]= ^(gray>>i)//gray移位后,自身按位异或

放一段代码这,用于参考:

/*Logic to convert binary numbers into Gray coded binary numbers is implemented in the following Verilog Code.
*/
module binary2gray();
reg clk;
reg rstn;
reg [5:0] counter_binary, counter_binary_reg, counter_gray, counter_gray_reg;
integer count, file_wr;

/* Initial block to generate clock and reset */ 
initial  begin
    clk = 0; rstn = 0;  #100 rstn = 1;
    forever begin
        #10 clk = !clk; 
 end end    

/* Synchronous Logic for registering the data and incrementing the counter for binary data */
always @ (posedge clk or negedge rstn)
begin
    if (!rstn) begin
        counter_binary_reg <= ‘b0;
        counter_gray_reg <= ‘b0;  end
    else begin 
        counter_binary_reg <= counter_binary + 1;
        counter_gray_reg <= counter_gray;
        $display(“binary number= 6’b%b : gray en-coded binary number = 6’b%b”, counter_binary_reg, counter_gray_reg);   end end

/* Logic is to get Gray code from Binary code */
function[5:0] binary2gray ;
    input[5:0] value;
    integer i;
    begin 
        binary2gray[5] = value[5];
        for (i=5; i>0; i = i – 1)
            binary2gray[i-1] = value[i] ^ value[i – 1];
    end
endfunction

/* Get gray encoded output */
always @(*)
begin 
  counter_gray = counter_gray_reg;
  counter_binary = counter_binary_reg;
  counter_gray = binary2gray(counter_binary_reg); end
endmodule

 

 

四、奇数分频

奇数分频电路:

  奇数分频电路常用的是错位“异或”法的原理。如进行三分频,通过待分频时钟的上升沿触发计数器进行模三技术,当计数器计数到邻近值进行两次翻转。比如计数器在计数到1时,输出时钟进行翻转,计数到2时再进行翻转,即在邻近的1和2时刻进行两次翻转。这样实现的三分频占空比为1/3或2/3.如果要实现占空比为50%的三分频时钟,可通过待分频的时钟上升沿触发计数器和下降沿触发计数器进行三分频,然后将上升沿和下降沿产生的三分频时钟进行相或预算,即可得到占空比为50%的三分频时钟。

      错位“异或”法推广:

  对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发的模N计数,计数到某一选定值时,进行输出时钟翻转,然后进过(N-1)/2再次进行翻转得到一个占空比非50%的技术分频时钟。再者同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同时,进行输出时钟翻转,同样经过(n-1)/2时,输出时钟再次翻转生成占空比非50%的奇数N分频时钟。两个占空比非50%的时钟相或运算,得到占空比为50%的奇数N分频时钟。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186024.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows常用脚本合集

    Windows常用脚本合集Windows常用脚本合集问题描述因为使用windows一些常用命令需要手动操作,比如启用ssh链接,要先使用win+r输入cmd再输入ssh,有时候甚至ssh命令容易忘记,还需要查看帮助,所以特此集合了一些常用命令软硬件描述操作系统windows10笔记本电脑使用方法创建文件xx.bat再【常用shell】中把代码复制到xx.bat中保存即可,然后双击使用常用shell禁用笔记本电脑自带的键盘,这个功能可以防止使用外接键盘时误触笔记本自带键盘。需要重启电脑后生效,慎重%1m

  • zabbix 监控系统_供天

    zabbix 监控系统_供天目录一、Zabbix简介1.1Zabbix概述1.2Zabbix监控原理1.3zabbix监控部署在系统中,包含常见的五个程序二、部署zabbix服务端三、部署zabbix客户端在Web页而中添加agent主机四、自定义监控内容1.明确需要执行的linux命令2.创建zabbix的监控项配置文件,用于自定义key3.在服务端验证新建的监控项五、在Web页面创建自定义监控项模板1.创建模板2.创建应用集(用于管理监控项的)3….

    2022年10月23日
  • 水仙花数

    水仙花数水仙花数

  • 关于vagrant一个虚拟机搭建多个项目配置(总结)

    关于vagrant一个虚拟机搭建多个项目配置(总结)

  • 什么是udp攻击?udp攻击的基本原理是什么

    什么是udp攻击?udp攻击的基本原理是什么UDPFlood关联TCP类服务防范UDP是无连接的协议,因此无法通过源认证的方法防御UDPFlood攻击。如果UDP业务流量需要通过TCP业务流量认证或控制,则当UDP业务受到攻击时,对关联的TCP业务强制启动防御,用此TCP防御产生的白名单决定同一源的UDP报文是丢弃还是转发。  比如,有些服务例如游戏类服务,是先通过TCP协议对用户进行认证,认证通过后使用UDP协议传输…

  • tkMapper整合「建议收藏」

    tkMapper整合「建议收藏」目录一.简介二.tkMapper整合2.1基于SpringBoot完成MyBatis的整合2.2整合tkMapper三.tkMapper使用四.TkMapper提供的方法4.1添加4.2更新4.3删除4.4查询4.5连表查询一.简介tkMapper就是一个MyBatis插件,提高开发效率。提供了针对单表的数据库操作方法逆向工程(根据数据表生成实体类、dao接口、映射文件)二.tkMapper整合2.1基于SpringBoot完成MyBatis的整合1.新建SpringBoot项目

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号