猿问

请问java中的>>>和>>>=是什么意思

请问java中的>>>和>>>=是什么意思


阿晨1998
浏览 342回答 5
5回答

慕哥9229398

“>>>”运算符所作的是无符号的位移处理,它不会将所处理的值的最高位视为正负符号,所以作位移处理时,会直接在空出的高位填入0。当我们要作位移的原始值并非代表数值时(例如:表示颜色图素的值,最高位并非正负号),可能就会需要使用此种无符号的位移。比如:-10>>>2=1073741821-10=1111 1111 1111 1111 1111 1111 1111 0110 (不管原来的“符号”位的值(一长串1),空上的全部直接填0)0011 1111 1111 1111 1111 1111 1111 1101=1037341821~ 按位非(NOT)(一元运算)& 按位与(AND)| 按 位或(OR)^ 按位异或(XOR)>> 右移>>> 右移,左边空出的位以0填 充运算符 结果<< 左移&= 按位与赋值|= 按位或赋值^= 按 位异或赋值>>= 右移赋值>>>= 右移赋值,左边空出的位以0填充<<= 左 移赋值&nbsp;

梵蒂冈之花

示符号,0位正,1为负)无论>>还是>>>都是针对二进制数进行操作的。1、右移运算符>>使指定值的所有位都右移规定的次数。右边移出去的部分扔掉不要,左边空出来的部分用原来的数字填充(这就是所谓的带符号右移)——比如说5,右移后为00000010。——你给的例子,假设x=-12,表示为32位int型就是11111111111111111111111111110100x>>3即带符号右移3位,结果是11111111111111111111111111111101,化为十进制等于-32、>>>与>>唯一的不同是它无论原来的最左边是什么数,统统都用0填充。——比如你的例子,byte是8位的,-1表示为byte型是11111111(补码表示法)b>>>4就是无符号右移4位,即00001111,这样结果就是15。
随时随地看视频慕课网APP

相关分类

Java
我要回答