JAVA中关于负数的位异或运算

如题所述

int表示32位整数,也就是说,用二进制表示出来它最多是32位
而你的a已经是32位的二进制数了,左移1位,变成33位,超过了int的表示范围。这个时候会产生“截断”,2^32
-
a
=
-4,就这是b的值
温馨提示:内容为网友见解,仅供参考
无其他回答

JAVA按位异或运算问题
首先取反运算符优先级高于异或运算符 其次int是32位 28 = 0001 1100(前面16位不写了)8 = 0000 1000 -8 = 1111 1000 -28 = 1110 0100 所以a=28^-8 = 0001 1100 ^ 1111 1000 = 1110 0100 = -28 a=-28^8 = 1110 0100 ^ 0000 1000 = 1110 1100 = -20 是-20,不是20。楼主看...

Java异或运算总结
异或运算是基于二进制的位运算,以符号XOR或^表示。其规则是:若二进制位相同,则结果为0;若二进制位不同,则结果为1。简单理解为不进位加法,例如1+1=0,0+0=0,1+0=0。异或运算具有交换律和结合律,且任何数与0进行异或运算结果不变。其用途广泛,如加密、数据校验、位操作等。例一:在不...

JAVA中四个二进制位从操作符即(&按位与、|按位货、^按位异或、~按位...
参加运算的两个数据,按二进制位进行“异或”运算。运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。“异或运算”的特殊作用:(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位...

求:JAVA中常用位运算符及其用法详解
int z = x&y \/\/z等于二进制数的01000000 即运算结果为z等于二进制数01000000。位或、位非、位异或的运算方法类同。(2)右移是将一个二进制数按指定移动的位数向右移位,移掉的被丢弃,左边移进的部分或者补0(当该数为正时),或者补1(当该数为负时)。这是因为整数在机器内部采用补码...

java中异或是怎样算的
解析异或是一种基于二进制的位运算,用符号XOR或者^表示,其运算法则是对运算符两侧数的每一个进制位同值则取0,异值则取1.简单理解就是不进位加法,如1+1=0,0+0=0,1+0=1.For example:3^5 = 6 转成二进制后就是 0011 ^ 0101 二号位和三号位都是异值取1 末尾两个1同值取零,...

JAVA按位异或运算问题
首先取反运算符优先级高于异或运算符 其次int是32位 28=00011100(前面16位不写了)8=00001000 -8=11111000 -28=11100100 所以a=28^-8=00011100^11111000=11100100=-28 a=-28^8=11100100^00001000=11101100=-20 是-20,不是20。楼主看清楚了。

java中(^)什么作用
java中(^)是位运算符, 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数以补码出现。例如 :9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12)java代码中可能出现正则表达式,在正则...

java >>=怎么算的
java中>>代表的是向右移位运算,而>>=代表的是向右移位运算时将运算的结果同时赋值给原值,举个例子说明一下:int index = 7;int index2 = index>>1,则表示将7转化为二进制数后向右移动一位,而原值不变,故index = 7 ,index2 = 3;int index3 = index>>=1,则表示将7转化为二进制...

java中按位异或与逻辑异或的区别
逻辑没有异或运算。位异或指:异或运算^,异或运算它都是以二进制数据为基础进行运算,1^1=00^0=11^0=10^1=1

java中的“&”,“|”,“^”,“~”用法
逻辑与 逻辑或 异或 取反 boolean a=true;boolean b=false;System.out.println(a&b);\/\/判断a后还要判断b 不管a为true 还是false 结果为false System.out.println(a|b);\/\/判断a后还要判断b 不管a为true 还是false 结果为true System.out.println(4^5);\/\/ 二进制 0100 0101 0001 同为1或0...

相似回答
大家正在搜