java中位运算 12>>33 ,应该怎么计算?过程是什么?

如题所述

1)它的通用格式如下所示:
value >> num
num 指定要移位值value 移动的位数。
右移的规则只记住一点:符号位不变,左边补上符号位

2)运算规则:
按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1
当右移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
例如,如果要移走的值为负数,每一次右移都在左边补1,如果要移走的值为正数,每一次右移都在左边补0,这叫做符号位扩展(保留符号位)(sign extension ),在进行右移

操作时用来保持负数的符号。

3)数学意义
右移一位相当于除2,右移n位相当于除以2的n次方。

4)计算过程
11 >>2(11为int型)
1)11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011
2)把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。
3)最终结果是0000 0000 0000 0000 0000 0000 0000 0010。
转换为十进制是3。

35 >> 2(35为int型)
35转换为二进制:0000 0000 0000 0000 0000 0000 0010 0011
把低位的最后两个数字移出:0000 0000 0000 0000 0000 0000 0000 1000
转换为十进制: 8
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-11
右移 33位相当于右移1位。
右移n位相当于除以2的n次方,大于32则相当于n-32位
12 /2 =6

java中位运算 12>>33 ,应该怎么计算?过程是什么?
1)它的通用格式如下所示:value >> num num 指定要移位值value 移动的位数。右移的规则只记住一点:符号位不变,左边补上符号位 2)运算规则:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1 当右移的运算数是byte 和short类型时,将自动...

Java 中“>>”和“>>>”有什么区别?
>>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。表达式为:result = exp1 >> exp2;result = exp2 >>> exp2;表示把数exp1向右移动exp2位。例如:res = 20 >> 2;2...

java中:-4<<2怎么算的。 -4321>>>30这题有什么简单算法没有?_百度知 ...
计算过程:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。>>>运算规则...

java里的位运算是否是用2进制数字的啊?
其中最后一个位运算比较特殊 是高位补1的运算 我们知道>>是右移 比如 11110000 >>2 以后是 00111100 负数变成了正数了 11110000>>>2 是11111100 还是负数

JAVA 位运算 (byte) (a << 2); 是什么意思?
首先要明白一点,这里面所有的操作都是针对存储在计算机中中二进制的操作,那么就要知道,正数在计算机中是用二进制表示的,负数在计算机中使用补码表示的。左移位:<<,有符号的移位操作 左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用0补充 右移位:>>,有符号的移位操作 右移...

java中 两个大于号是什么意思? 如: if(i < size >> 1)
那是移位操作,>>是右移,size>>1表示把size右移1位,相当于size\/2 <<是左移,左移1位表示size*2 移位操作运行速度非常快,比普通的乘法除法快很多

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

Java中,位运算符>>,右移时左边何时补0,何
举个例子:2左移动3位2(十进制)=00000010(二进制)二进制00000010向左移动三位变成了00010,超出了8位,相当于删除前三个字符位,删除之后又由于不满足8位,后面填0,变成0001000000010000(二进制)=16(十进制)

java中>> 和 >>>的区别,为什么没有<<<
一、>> 和 >>>的区别就是有无符号的区别:右移运算符>>(有符号)用来将一个数的各二进制位全部右移若干位.例如:a = a>>2,使a的各二进制位右移两位,移到右端的低位被舍弃,最高位则移入原来高位的值。如:a = 00110111,则a>>2=00001101,b=11010011,则b>>2 = 11110100。无符号右移...

java中10>>2,10<<2怎样计算
这是位运算符。先把10转换成二进制:00001010 10>>2:右移两位就是00000010,再把00000010转换成十进制就是2。10<<2:左移两位就是00101000,然后101000转换成十进制就是40。

相似回答