精华内容
下载资源
问答
  • 二进制异或

    2013-09-16 17:57:07
    package demo; import java.util.ArrayList; public class pianyiliang { ... public static void main(String[] args) { ... //运算过程:首先把123十进制转换二进制(01111011),16进制20...
    package demo;

    import java.util.ArrayList;

    public class pianyiliang {
    public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();
    //运算过程:首先把123十进制转换二进制(01111011),16进制20转换二进制(00100000)
    //然后对二进制做异或运算,运算结果再转换十进制,
    //运算规则,相同则0 相反则1,比如0^0=0 0^1=1 1^1=0
    sb.append(123^0x20);
    System.out.println(sb.toString());
    }
    }
    展开全文
  • 在计算机系统中,数值一律使用补码来表示和存储。... 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制...

           在计算机系统中,数值一律使用补码来表示和存储。在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。

      对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。

      一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机字长为8位,转换成二进制就是[00000010]。如果是 -2 ,就是 [10000010] 。因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 [10000010],其最高位1代表负,其真正数值是 -2 而不是形式值130([10000010]转换成十进制等于130)。所以将带符号位的机器数对应的真正数值称为机器数的真值。

    • 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
    • 反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
    • 补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)

    1、计算机使用补码的主要原因是使用补码可以将符号位和其它位统一处理;同时,减法也可按照加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

    - 补码与原码的转换过程几乎相同。

        - 数值的补码表示(分两种)

            - 正数的补码:与原码相同

            - 负数的补码:符号位位1,其余位位该数绝对值的原码按位取反;然后整个数加1

        - 已知一个数的补码,求原码的操作分为两种情况

            - 如果补码的符号位“0”,表示是一个正数,所以补码就是该数的原码

            - 如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位位1,其余各位取反,然后整个数加1。

    2、移位运算符就是在二进制的基础上对数字进行平移。Java按照平移的方向和填充数字的规则分为三种:<<左移,>>带符号右移 和>>>无符号右移。

    3、 在Java的移位运算中,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,对于char、short、char和int进行移位操作时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动65次移位1次得到相同的结果。

        (1) <<  运算规则:按二进制形式吧所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

        语法格式:

             需要移位的数字<<移位的次数

             例如:4<<2 ,则是将数字4左移2位

         计算过程

             4<<2

            Java中一个int数占四个字节,那么4的二进制数字为00000000 00000000 00000000 00000100,然后把该数字左移两位。其它的数字都朝右平移两位,最后在低位(右侧)的两个空位补零。则得到的最终结果是00000000 00000000 00000000 00010000,即转换为十进制数16。

             在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

             在溢出的前提前,则不符合这个规律。

        (2)>>运算规则:按二进制形式吧所有的数字都向右移动对应的位置,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

         语法格式:

             需要移位的数字>>移位的次数

             例如:-4>>2和4>>2,则是将数字 -4和4右移2位

         计算过程

             4>>2

             Java中一个int数占四个字节,同样4的二进制为00000000 00000000 00000000 00000100,然后把该数字右移两位。其它的数字都朝左平移两位,最后在高位补符号位(该数是正数,全补零),得到的结果是00000000 00000000 00000000 00000001,即使十进制的1。数学意义就是右移移位相当于除2,右移n位相当于除以2的n次方。

            -4>>2

             由于负数在计算机中是以补码的形式存储的,那么-4的二进制为11111111 11111111 11111111 11111100,然后把该数字右移两位,其它数字都朝左平移两位,最后在高位补符号位(该数是负数,全补一),得到的结果是11111111 11111111 11111111 11111111(补码格式),即是十进制的-1。

        (3)>>>运算规则:按二进制形式吧所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。正数运算结果与带符号右移相同,对于负数来说则不同。

             对于4>>>2和-4>>>2运算,可以通过上述例子进行类推。

    4、在java c++ c等编程语言中,二进制运算主要包括以下几种:

    • 位与运算符(&)

    运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。

    比如:129&128.

    129转换成二进制就是10000001,128转换成二进制就是10000000。从高位开始比较得到,得到10000000,即128.

    • 位或运算符(|)

    运算规则:两个数都转为二进制,然后从高位开始比较,两个数只要有一个为1则为1,否则就为0。

    比如:129|128.

    129转换成二进制就是10000001,128转换成二进制就是10000000。从高位开始比较得到,得到10000001,即129.

    • 位非运算符(~)

    运算规则:如果位为0,结果是1,如果位为1,结果是0.

    • 位异或运算(^)

    运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。

    比如:8^11.

    8转为二进制是1000,11转为二进制是1011.从高位开始比较得到的是:0011.然后二进制转为十进制,就是Integer.parseInt("0011",2)=3;

    更高效的判断奇偶程序:

    bool even_odd(int num)
    {
        if(((num)>>1)<<1 == num)
            return true;
        return false;
    }

    参考博客:https://blog.csdn.net/Jason_M_Ho/article/details/78700434

    https://www.cnblogs.com/yesiamhere/p/6675067.html

     

    展开全文
  • Java当中的异或运算

    2021-02-04 18:24:18
    在计算机组成原理,或者在模电这些电路运算等等,用到的异或都是二进制的异或,但如果是用十进制,甚至其他进制进行异或运算时,也许很多人就迷惑了。 例如: 1. 2 xor 2 = 0 2. 3 xor 2 = 5 3. 3 xor 0 = 3 .....

    异或运算

    在计算机组成原理,或者在模电这些电路运算等等,用到的异或都是二进制的异或,但如果是用十进制,甚至其他进制进行异或运算时,也许很多人就迷惑了。
    例如:

    
     1. 2 xor 2 = 0
     2. 3 xor 2 = 5
     3. 3 xor 0 = 3
     ...
    
    

    有些人给出的解答没有很清除,只有以上的1和3例子,就有可能让人误解,~~误解为任何数与0异或都是该数本身,但不知道这是怎么来的,遇到其他情况就不一定能运算了,~~所以此处我给出了第二个例子,就很好的解释了什么是异或;
    异或:当两个数相同时,即没有“异”,所以自然就是为0;当两个数不同时,即有“异”,这时再进行“或”,即相加。

    展开全文
  • Java中二进制运算

    2020-10-03 09:27:19
    (3)如果字符是^,则两个整数进行二进制异或运算; (4)如果是其他字符,则固定输出信息:ERROR 输入格式: 在一行中依次输入整数1,字符,整数2。 输出格式: 类似3 & 4 = 0 其中,运算符号&的前后都有一个...

    本题目要求读入2个整数和一个字符,然后根据这个字符值,对两个整数进行相应的二进制位的运算。要求必须使用switch选择结构

    (1)如果字符是&,则两个整数进行二进制位的与运算

    (2)如果字符是 |,则两个整数进行二进制位的或运算

    (3)如果字符是^,则两个整数进行二进制位异或运算

    (4)如果是其他字符,则固定输出信息:ERROR

    输入格式:

    在一行中依次输入整数1,字符,整数2。

    输出格式:

    类似3 & 4 = 0

    其中,运算符号&的前后都有一个空格,等号的前后也都有一个空格。 上面表示3和4做二进制的与运算,结果是0。

    输入样例:

    3的二进制是0011,4的二进制是0100,二者与运算的结果是0。

    3 & 4
    

    输出样例:

    注意&和=的前后,都是有且仅有一个空格。

    3 & 4 = 0
    

    输入样例:

    7 X 3
    

    输出样例:

    ERROR
    


    答案

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String str = scanner.nextLine();
            String [] arr = str.split("\\s+");
            int num1 = Integer.parseInt(arr[0]);
            int num2 = Integer.parseInt(arr[2]);
            switch (arr[1]){
                case "&":
                    System.out.println(num1 + " & " + num2 + " = " + (num1&num2));
                    break;
                case "|":
                    System.out.println(num1 + " | " + num2 + " = " + (num1|num2));
                    break;
                case "^":
                    System.out.println(num1 + " ^ " + num2 + " = " + (num1^num2));
                    break;
                default:
                    System.out.println("ERROR");
                    break;
            }
    
        }
    }
    
    展开全文
  • java中的异或运算应用

    2019-10-29 17:29:22
    异或运算 例如: 真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。 就是说两个值相异或结果为真。 它是一个二进制运算: 1^1=0 0^0=0 1^0=1 0^1=1 两者相等为0,不等为1. 举个...
  • 也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。运算规则:两个操作数的同位中,如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)则为1。java中位运算符...
  • java二进制运算

    2020-08-20 18:57:25
    在讲二进制运算之前,首先得知道原码,反码,补码的概念。举个例子。 二进制运算 & 按位逻辑与,都为1则为1,否则为0; | 按位或,都为0则为0,有一个为1则为1; ^ 异或,两个都相同为0,两个不相同为1,11=0...
  • 异或运算的性质:异或运算是基于二进制的位运算,采用符号XOR或者^来表示,运算规则是就与二进制,如果是同值取0、异值取1。简单的理解就是不进位加法,例如1+1=0,0+0=0,1+0=0;性质:交换律 可以任意交换运算因子...
  • 异或运算的性质:异或运算是基于二进制的位运算,采用符号XOR或者^来表示,运算规则是就与二进制,如果是同值取0、异值取1。简单的理解就是不进位加法,例如1+1=0,0+0=0,1+0=0;性质:交换律 可以任意交换运算因子...
  • Java-异或运算

    千次阅读 2020-05-14 10:09:30
    Java-异或运算异或运算法则异或的运算方法是一个二进制运算:例图:总结例题1例题2:136. 只出现一次的数字(力扣) 异或运算法则        1. a ^ b = b ^ a  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b...
  • 位运算符 & | ~ ^& : 对两个二进制数按位做与运算,即 1 & 0 = 0; 1 & 1 = 1; 0 & 0 = 0;| : 对两个二进制数按位做或运算,即 1 & 0 = 1;...^ : 对两个二进制数按位做异或运算,...
  • 在看HashMap 源码时发现,HashMap 的 put 方法中用到了位运算,与运算,异或运算二进制运算。对于这种平时不常用的知识点,很容易遗忘。同时在看java技术栈相关源码时也会发现有大量的二进制运算,所以写这篇博客...
  • )参加运算的两个数,按二进制位进行“与”运算运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。(负数按补码形式参加按位与运算)即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。例:3 &...
  • java异或运算

    千次阅读 2018-04-26 22:51:27
    首先将数字转换成二进制二进制规则逢二进一5转换成二进制得:101,6转换成二进制得110然后进行异或运算101110异或运算法则是相同部位相同取0否则取1结果等于011011转换成数字等于3所以5^6等于3...
  • 1.简述需要注意的是,二进制都是从高位到低位。2.位运算符分类符号描述运算规则&与按位与,如果对应的二进制位同时为 1,那么计算...^异或按位异或,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 ...
  • (3)如果字符是^,则两个整数进行二进制异或运算; (4)如果是其他字符,则固定输出信息:ERROR 输入格式: 在一行中依次输入整数1,字符,整数2。 字符的前后都有一个空格。 输出格式: 类似3 & 4 = 0 其中,...
  • Java异或运算

    千次阅读 2016-04-27 11:28:04
    规则:真^假=真 假^真=真 假^假=假 真^真=假,Java异或运算的基本法则就是:只要两个条件...但Java异或运算还有一个前提那就是它都是以二进制数据为基础进行的运算。也就是说当我们在使用代码中使用到异或运算时,
  • (3)如果字符是^,则两个整数进行二进制异或运算; (4)如果是其他字符,则固定输出信息:ERROR 输入格式: 在一行中依次输入整数1,字符,整数2。 字符的前后都有一个空格。 输出格式: 类似3 & 4 = 0 其中,运算...
  • ‍‍‍‍位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。(java中...
  • 运算法则: 异或运算 public String XOR_operation(String strHex_X,String strHex_Y){ //16进制字符... //16进制字符转二进制字符 String thisBinary=Integer.toBinaryString(Integer.valueOf(strHex_Y,16)); S
  • java位运算中异或运算的详解

    千次阅读 2018-03-16 08:49:45
    例如:0011^1010 = 1001 2^3 = 其所对应二进制的10^11=01 = 1异或运算有三个特征,一个是0与一个数做异或操作还是本身,本身与本身做异或操作为0,异或操作还满足交换率。利用这一特点我们可以利用异或运算的特性来...
  • java异或运算(^)的应用 异或运算法则  1. a ^ b = b ^ a  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;  3. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.  4. a ^ b ^ a = b. 异或运算  1、异或是一个数学运算符...
  • 按位与、或、非、异或、左移、右移、无符号右移
  • JAVA二进制基础

    2020-05-10 12:22:25
    异或运算(^) 取反运算(~) 左移运算(<<) 右移运算(>>) 无符号右移运算(>>>) JDK内置的进制转换 十进制转成十六进制 Integer.toHexString(int i) 十进制转成八进制 ...
  • 也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。运算规则:两个操作数的同位中,如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)则为1。java中位运算符...
  • java异或运算(^)

    2019-12-25 17:03:08
    异或运算(^) System.out.println(1 ^7);//亦或 步骤:先将1和7转化为二进制原码, 1的原码:0000 0001 7的原码:0000 0111 比较1和7的位数是否相同,如果相同,则为0 不相同,则为1 所以比较后的原码为: 0000 ...
  • java的移位和异或运算

    2017-11-28 10:29:00
    Java移位运算种类 基础:我们知道在Java中int类型占32位,可以表示一个正数,也可以表示一个负数。正数换算成二进制后的最高位为0,负数的二进制最高为为1 例子: -5换算成二进制后为:1111 1111 1111 1111 1111 ...
  • java中与运算,或运算,异或运算

    千次阅读 2019-03-27 11:42:49
    记录一下: ...5 二进制 101 3 二进制 011 结果 001 或(|)运算:有一个为1,则为1 5 二进制 101 3 二进制 011 结果 111 异或(^)运算:不相同则为1 5 二进制 101 3 二进制 011 结果 110 ...
  • java 二进制相关

    2018-01-07 20:47:04
    与运算 负数以及正反补码 或运算 取反运算 无符号右移运算 异或运算 右移运算 左移运算

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 863
精华内容 345
关键字:

java二进制异或运算

java 订阅