整型b= -1,b>>>1值为多少?为什么?当b为byte型呢?

如题所述

第1个回答  2008-04-12
int b=-1;
计算机中的补码是:11111111111111111111111111111111
右边去掉一个1,前面补上一个0.就是0。。。。。。1111;
计算机把正负数都是用补码表示,第一位是符号位。也是就31个1最大表示2的31次方减1==2147483647~~
byte?只不过少几个位数罢了。再说它会自动转型成int。
第2个回答  2019-11-04
byte
a=(byte)128;
因为整型数128十六进制为0080h,强制转换后,高八位去掉结果将变为:80h,所以为-128
byte
b=(byte)(-129);
因为整型数-129十六进制为ff7fh,强制转换后,高八位去掉,结果为:7fh,所以为127
第3个回答  2008-04-12
>>> 是 用"0"填充前面的位右移
用下面程序,得到如下结果:
a=2147483647 b=-1
a=2147483647 b=2147483647
不明白!

public class gc534 {
public static void main(String[] args) {
int a=-1,a1;byte b=-1,b1;
a1=(int)(a>>>1);
b1=(byte)(b>>>1);
System.out.println("a="+ a1 +" b="+ b1);
System.out.println("a="+ (a>>>1) +" b="+ (b>>>1));
}
}
第4个回答  推荐于2016-12-01
int b=-1;
在计算机中的补码是32位的(java),因此是:
11111111111111111111111111111111
根据>>>运算符的规则,右移之后在空位补零,因此右移一位之后,变成:
01111111111111111111111111111111
这个就是最终的结果了,换为十进制的数的话,就是:
2147483647。
byte的话,因为byte是8位的,因此同理:
byte=-1的二进制表示为:
11111111
根据>>>规则,
变为:
01111111
二进制就是:
127啦。本回答被提问者采纳
第5个回答  2008-04-12
基础位运算符“>>>”,查书上的资料吧,记不得了

整型b= -1,b>>>1值为多少?为什么?当b为byte型呢?
整型b= -1,b>>>1值为多少?为什么?当b为byte型呢?我采纳的回答:int b=-1;在计算机中的补码是32位的(java),因此是:11111111111111111111111111111111 根据>>>运算符的规则,右移之后在空位补零,因此右移一位之后,变成:01111111111111111111111111111111 这个就是最终的结果了,换为十进制的数的...

为什么定义时整型可以自动转换成byte型,而double型不能转换为float型...
byte b = 1; \/\/这个时候由于byte没有超出-128~127范围,所以会赋值成功。int i = 12; \/\/Java中定义整数默认是int类型。float f = 12.0f; \/\/这个地方如果定义的是float类型的话必须加f,不然会默认为double类型。

byte 类型的小问题就是搞不明白
BYTE类型是字节型,INT是短整型 BYTE存放的应该是1-255,换成二进制是00000001-11111111

为什么byte类型之间的值不能相加
byte类型之间的值 可以 相加。但因 1 字节 的 允许数据范围较小,相加的结果,数值很容易超界,通常改用 整型。byte类型 可以看成 unsigned char。下面是相加的例子:unsigned char a='A',b=3,c;c = a + b;printf("c=%d -- %c \\n",c,c );输出 c=68 -- D ...

byte和int类型有什么区别
1、类型不一样,byte是字节数据的类型,int是整型数据的类型。2、占用的字节不一样,byte占用1 个字节,int占用4个字节。3、大小范围不一样,byte 的大小范围是-128—127 ,int的大小范围是-2147483648到2147483647。Byte的中文意思是字节,是计算机用于存储容量的一种计量单位,一般情况下一字节等于有...

java基本数据类型有哪八种?
可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。 在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的B:35B,表示它是byte型的,同样的...

Java中给byte变量直接赋值可以自动转换,但为什么把int变量赋给byte变 ...
是这样的,整型直接量在没有加后缀的时候默认为int,但是当它被赋值给某个变量(这个变量是short型,int型,byte型中的一种)时,则会自动转化成相对应的类型。比如说byte a=127;这里的127在没有赋值给a时默认是int型,赋值时自动调为byte型,并赋给a。但是,如果出现这样的情况:int a=12;\/\/...

...类型和引用数据类型(原始类型和引用类型有什么区别)
byte 字节型是一种8位有正负的二进制整数 最小值是-128(-2^7) 最大值是127(2^7-1) 默认值为0 字节型数据类型主要是为了在大型数组内节省空间,主要是替代整数由于字节型比整数小4倍。 例如:bytea=100,byteb=-50 短整形 short 短整数是一种16位有正负的二进制整数 最小值是-32768(-2^15) 最大值...

Java中&是什么意思?
&在java中表示位运算符即,按位与运算。用来对二进制位进行操作,为二元运算符,智能为整型和字符型数据。如果两个运算数都是1,则结果为1.其他情况下,结果均为零:00101010(十进制值为42)&00001111(十进制值为15)=00001010(十进制值10)而在java语言中 i1&=3的表达式的展开形式为:i1=i1&3,...

请问若整型数据int占两字节,数据取值范围怎么算的?
1B(byte,字节)= 8 bit 2B(byte,字节)=16bit 16bit代表可以储存的最大数为2^16=65536 若不考虑符号问题,那么可以储存0-65536个数。考虑符号问题,二进制第一位为符号位,则储存的最大数为2^15=32768 0不属于正数也不属于负数,所以有符号的情况下,储存的数字为-32768——+32767 ...

相似回答