java(byte)>>>时怎么运算的

(byte)0xa2>>>2 得到1073741800。(byte)0x72>>>2却是28、为什么相差这么大。而且。(int)0xa2>>>2也是是28。谢谢回答

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

(byte)0xa2>>>2 = 2

(byte)0x72>>>2 = 28

(int)0xa2>>>2 =28 (错误)

(byte)0x72 是十进制的114, 114转换成二进制是 1110010,1110010>>>2 (位移两位)是11100,而11100转换成十进制是:28

而(int)0xa2是十进制的162,162转换成二进制是 10100010, 10100010>>>2 是101000 ,实际的值是40,不是28.
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-16
0xa2是142, 已经超过了 byte 的存储空间(-128~+127),会溢出,得到了一个未知的数.
>>>是无符号右移,对于正数相当于除以了4(2^2).
第2个回答  2013-08-17
这些是位运算,>>> 右移,左边空出的位以0填充
这上面有详细的解释
http://blog.csdn.net/lu7kang/article/details/5049471本回答被提问者采纳

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

java中byte的加减
第一个:b是byte它与1加进,1是int的,所以结果是int的。也就是128 第二个:也是一样 第三个:b是byte的加1后是int的为128.而128转换为byte时,byte表示不下所以就截取前面的一部分表示(二进制位)。所以就为了-1

求助~java基础问题byte型
在计算的时候byte 和short 都会被转换成int 所以结果也是int 这个时候需要强制转型 z = (byet)(x + y);

JAVA中byte类型的介绍。 谢谢
byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。运算规则:正数的最高位都是 0 ,正数的值就是二进制表示的值。负数的最高位都是 1 ,负数的...

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

JAVA 位运算 (byte) (a << 2); 是什么意思?
左移位:<<,有符号的移位操作 左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用0补充 右移位:>>,有符号的移位操作 右移操作是将运算数的二进制码整体右移指定位数,右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。例子:public static void main(String[] args...

java运算符
因为你这个是int类型,所以算完了之后去掉小数点就是40。重点在这了,byte是字节的意思吧。大B字节小b位,字节最大是多少啊,255吧。本来你这个int是啥意思的我给你看下。00000000 00000000 00000000 10100010 二进制全1的情况下一个最大字节是255,在java里面byte取7位用来存储,头一位作符号位。就是说...

Java中,位运算符>>,右移时左边何时补0,何时补1
防止移动超过long值里现成的位数。但在进行“无符号”右移位时,也可能遇到一个问题。若对byte或short值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况下会得到-1的结果。

java中byte b=10;byte b1=~b;编译错误原因。byte b 2=~10;是正_百度...
java中byte在内存中实际上是用int运算的。b取反后,会自动变成int类型。加法、减法,都一样,byte会自动变成int类型。所以会报错。而~10可以,这是java字面量编译原则,会先将~10计算出来。在赋值给byte,所以不会有问题。

计算机编程语言中比如说java中的byte类型,取值范围是 -128-->127,这...
byte是字节的意思,1byte= 8bit,范围就是10000000-11111111,最后转换成十进制,范围就是-128-127

相似回答