byte a=(byte)128; byte b=(byte)(-129); a,b得到的值分别为

如题所述

第1个回答  2015-01-17
a和b得值分别为-128和127.
这个是编码方式决定的,Java中正数用源码表示,负数用补码表示,第一位是符号位。

所以对于128和-129,他们的编码分别是:
0000 0000 0000 0000 0000 0000 1000 0000
1111 1111 1111 1111 1111 1111 0111 1111。

对于a来说,1000 0000是负数(第一位为1),它的绝对值是1000 0000即128,
而对于b来说,0111 1111是正数,值为127。
————————————————————————————————————
0 00000000

1 00000001

... ........

127 01111111

----------------

共 128 个

-1 11111111

-2 11111110

... ........

-128 10000000

----------------

共 128 个

我们都知道byte占8位。而2的8次方等于256,也就是byte最多可以表示256个不同的数,

0~127:128个

-0~127:128个

但是这里0与-0表示一样的数了,所以就用-0的二进制补码表示到-128里面去了

byte a=(byte)128; byte b=(byte)(-129); a,b得到的值分别为
byte a=(byte)128;因为整型数128十六进制为0080H,强制转换后,高八位去掉结果将变为:80H,所以为-128 byte b=(byte)(-129);因为整型数-129十六进制为FF7FH,强制转换后,高八位去掉,结果为:7FH,所以为127

byte a=(byte)128; byte b=(byte)(-129); a,b得到的值分别为
a和b得值分别为-128和127.这个是编码方式决定的,Java中正数用源码表示,负数用补码表示,第一位是符号位。所以对于128和-129,他们的编码分别是:0000 0000 0000 0000 0000 0000 1000 0000 1111 1111 1111 1111 1111 1111 0111 1111。对于a来说,1000 0000是负数(第一位为1),它的绝对值是10...

byte b1=(byte)128 结果是什么
-128,byte只有八位,只能表示-128--127 计算机中负数的存储方式是补码。对负数的绝对值的二进制值取反,再加一,即为负数的二进制码。如:-1的绝对值1的二进制码为00000001,取反得到11111110,再加一为11111111。-128的绝对值128的二进制码为10000000,取反得到01111111,再加一为10000000,正好是Byte...

整型b= -1,b>>>1值为多少?为什么?当b为byte型呢?
int b=-1;计算机中的补码是:11111111111111111111111111111111 右边去掉一个1,前面补上一个0.就是0。。。1111;计算机把正负数都是用补码表示,第一位是符号位。也是就31个1最大表示2的31次方减1==2147483647~~byte?只不过少几个位数罢了。再说它会自动转型成int。

byte amount = 128;为什么是错误的byte型变量声明?
byte为有符号类型,长度为1字节,可以表示的数的范围是-128~127,超出这个范围需用强制类型转换(会发生截断) 。下面是一个例子:public class Test { public static void main (String[] args){ byte a=-128;byte b=(byte)-129;byte c=127;byte d=(byte)128;System.out.println(a);System....

int a=(byte)128;为什么a的值是-128?
因为byte最大是127,根据计算机计算原理,如果超出,他会返回到一个最小的值上去,即:-128 这个就好像是一个数字环境,数字环的结构式这样的:-128,-127,-126,...0,1,2,3,...126,127,-128,-127,-126 大致意思就是这样 楼主采纳我的答案吧..哈哈哈 ...

int x=(byte)128;输出变量x的值是多少?为什么?
是-128,因为你是从小类型(byte)向大类型(int)转型,值不变的,但是int型的最高位是1吧,所以是负的

byte b=(byte)129;\/\/变量b的取值为-127
byte的取值是-128-127 129是不可以转换成byte的。不然会以补码形式来转 你只能 这样int b=129

int x=(byte)128;输出变量x的值是多少?为什么?
输出128,因为本身int型的取值范围比byte类型大,所以所以类型能够自动转换,也就是说int 类型能够容纳128这个数

byte a=(byte)255;该语句执行后,变量a的值是
回答:-1

相似回答
大家正在搜