java >>=怎么算的

int b1 =1;
b1>>=31得到-1.是怎么算的
b1>>=1; 也是-1
1>>31得到的为什么是0
b2>>>=31;得到1 但是 b2>>>=1;得到0,是怎么回事
谢谢回答

java中>>代表的是向右移位运算,而>>=代表的是向右移位运算时将运算的结果同时赋值给原值,举个例子说明一下:

int index = 7;

int index2 = index>>1,则表示将7转化为二进制数后向右移动一位,而原值不变,故index = 7 ,index2 = 3;
int index3 = index>>=1,则表示将7转化为二进制数后向右移动一位并且将结果赋值给原值,故 index = 3 ,index3 = 3.
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-17
这个说明的b1 b2都是负数。
任何负数负数右移31位都是-1 任何负数无符号右移31位都是1
任何正数不论有无符号右移31位 结果都是0 b1>>=1; 得到-1 说明 b1可能是 -1 或-2
b2>>>=31 得到1说明b2是负数 b2>>>=1 说明b2是正数。
从你的情况看你b1 b2都是预算过了的。
比如
b1>>=31; 结果b1是-1 再运算下一行 这时b1已经是-1了
b1>>=1; 因为-1右移多少位都是-1 所以结果b1还是-1
b2是负数的话不论负几
b2>>>=31 结果都是1
b2>>>=1; 这个运算时b2是1 右移1位b2就成0了。
第2个回答  推荐于2017-10-07
这个都是位运算,
>> 右移
>>> 右移,左边空出的位以0填充
运算符 结果
<< 左移
&= 按位与赋值
|= 按位或赋值
^= 按位异或赋值
>>= 右移赋值
>>>= 右移赋值,左边空出的位以0填充
<<= 左移赋值本回答被提问者采纳
第3个回答  2013-08-17
首先你要先把b1写成2进制形式的,在进行位移运算
第4个回答  2018-04-17
拜托大佬 你题目上面
int b1 =1;
b1>>=31得到-1.是怎么算的 是怎么算的 我为什么是0

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

java中的>>>和>>>=是什么意思
“>>>”运算符所作的是无符号的位移处理,它不会将所处理的值的最高位视为正负符号,所以作位移处理时,会直接在空出的高位填入0。当我们要作位移的原始值并非代表数值时(例如:表示颜色图素的值,最高位并非正负号),可能就会需要使用此种无符号的位移。比如:-10>>>2=1073741821 -10=1111 ...

JAVA中的“>>”和“>>>”运算符
1、>>:右移运算符,num >> 1,相当于num除以2。按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。符号位不变。如:-1在32位二进制中表示为:11111111 11111111 11111111 11111111 -1>>1:按位右移,符号位不变,仍旧得到11111111 11111111 ...

java(byte)>>>时怎么运算的
左移<<:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。右移>>:向右移位,符号后面的数字是移了多少位,移的位用符号位补齐,例如01111111右移一位后变为00111111,而10000000右移一位后变成11000000,因为符号位是1。(byte)0x...

Java BigDecimal中的大于,等于、小于计算
java BigDecimal num1 = new BigDecimal("123.456");BigDecimal num2 = new BigDecimal("123.457");int result = num1.compareTo(num2);在这个例子中,如果执行`result = num1.compareTo(num2);`,结果将为负数,因为`num1`小于`num2`。为了实现类似`>`、`<`、`==`的比较逻辑,可以简单...

java中,2>>1 和2<<1中的‘<<’和‘>>’是什么运算啊?
2>>1:右移一位,2右移一位相当于乘以2=>2\/2=1 2<<1:左移一位,2左移移一位相当于除以2=>2*2=4 C语言中左移<<表示乘以2,右移>>表示除以2,这是由计算机工作原理导致 移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与右移位操作符的...

java "">>>"什么意思 比如 8>>>2
与>> 的意义类似,即将相应二进制数右移,高位补零。 区别在于>> 是有符号右移而>>>是无符号右移(把符号位一起移了),可以使用Integer.toBinaryString(int i)来看01比特,打印出来你就明白了。

java <<=是什么意思?
那么<<=就相当于n=2,n=n<<2.左移的概念是基于2进制的.这个等式的结果是8.因为2的2进制是10,而左移2位就相当于在后面添2个0也就成了1000也就是8的2进制.如果问你如何最高效的求2的3次方是多少?你就可以使用2<<2来运算,对于计算机来说这是最高效的.然后左移之后直接进行复制不改变数据...

JAVA里面的位运算符>>,<<,>>>是什么意思,请举个列子具体说明一下?_百 ...
java 中:>>带符号右移 (n>>2 将整型值带符号右移2位 )<<带符号左移 (n<<2 将整型值带符号左移2位 )>>>无符号右移 (n>>>2 将整型值无符号右移2位 ) 在32位系统中任何数左移(右移)32位还是它本身 例如:�6�1a=a<<2将a...

java运算符有哪些。求解一定要全 还有中文标注,谢谢了。
Java 的表达式就是用运算符连接起来的符合Java 规则的式子.运算符的优先级决定了表达式中运算执行的先后顺序.例如,x<y&&!z相当于(x<y)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序.运算符的结合性决定了并列...

相似回答