byte类型变量相加和为byte类型 超出范围怎么表示

byte a=67;
byte b=89;
byte c=(byte)(a+b);
System.out.println(c);
输出值为-100;请问是怎么算得。

long、int、short、byte都是带符号整数。
byte为8位,表示范围-128~+127最高位为符号位,负数用补码表示。
67+89=156, 10011100,即-100。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-23
可以采用以下的办法:
byte a=200,b=252,c=215;
int x,y;
printf("%d\n",(int)a+b); //方法1,强制类型转换后,相加输出
x=a; //方法2,先赋值,自动类型转换
x+=b;
y=(int)a+c; //方法3,强制类型转换后,相加后再赋值本回答被网友采纳
第2个回答  2011-10-30
因为BYTE是单字节的,占了8位,应该是用二进制来做的吧

byte类型变量相加和为byte类型 超出范围怎么表示
byte为8位,表示范围-128~+127最高位为符号位,负数用补码表示。67+89=156, 10011100,即-100。

变量相加和常量相加的区别
1.变量进行相加的byte类型最终对a3赋值时需要进行强制转换为byte类型,原因是byte类型相加时会自动提升为int类型进行运算。 2.常量相加最终对a4赋值时,是直接赋值,原因是在编译期时,编译的过程中检测到4+3的数值范围在byte范围之内,所以就直接可以将值赋予到byte类型的a4中。如果常量相加超过了byte范...

在Java中,byte类型数据在运算之前要转换成int类型数据。
首先你要明确一点byte类型表示一个字节8位,用来表示一些基本字符,int是长度为32位的整形数。当你在Java中给一个byte类型数据初始化时,你可以用字符,也可以用整数,但是这个整数必须要在-128和127之间(因为byte是8位),它会将这个数转化为一个字符然后存放起来,因此你的前两行代码是没有问题的。

java中 byte b = 2; b = 3+7;执行正确 但是 byte b = 2; byte b1 =...
b = b1+b2;错误是因为byte与byte数据相加,数据自动转换为int型,所以byte b= b1+b2肯定不对了啊。需要类型强制转换,byte b=(byte)(b1+b2)

byte b = 10;为什么b=b+5;编译报错?
b=b+5需要强转的原因在于Java的运算机制,在Java中两个变量只要参与了数学运算,就有可能进行类型提升,只要类型比int小(即byte,char,short),那么在运算之前,这些值会自动转换成int,所以需要运算后强转成byte类型.具体的Java程序如下(见图)

在visual basic中,最简单的数据类型包括
Byte 数据类型在存储二进制数据时很有用。 --- Currency数据类型 Currency 变量存储为 64 位(8 个字节)整型的数值形式,然后除以 10,000 给出一个定点数,其小数点左边有 15 位数字,右边有 4 位数字。这种表示法的范围可以从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807。Currency 的类型声明字...

java 怎么把一个字节 高低位互换啊?
位运算啊 byte b='0';int b1=b<<4&0xf0; \/\/左移4位和 11110000与运算 低位变高位 int b2=b>>>4&0x0f;\/\/右移4位和 00001111与运算 高位变低位 byte c=b1+b2; \/\/高位低位相加得到高地位互换。

JAVA为什么byte b=a+1会报错
byte a = 1;byte b = a+1;∥+会自动提升类型,a被提升为int,a+1是个表达式,是不确定的,所以=不会自动转换类型,需要,改为byte b = (byte)(a+1)———byte a = 1;a +=2;∥+把a被提升为int类型,2取自常量池int,1+2得3,常量+常量得常量,常量在+=(=)后面,...

java:a = a + 5 报错,为什么 b += 5就可以?
byte a=a+5,5是整数,默认是int型,所以此处,把一个byte型数据a和int型数据5相加并没有错,错在于把相加之后的和赋给a,因为byte和int运算,byte就自动类型提升为int,所以和就是一个int型数据,把一个int型数据赋给byte型变量就会出现精度错误。而 b += 5, '+=' 这是一个赋值运算符,...

java中表达式 10\/4*5 的结果为( B )。 A. 12.5 B. 10 C. 0.5 D. 12...
那么应该这样做 x = (byte)(x+y); 这样就可以强制转换为byte类型,可以获取结果,但是这里多说一句,byte类型的取值范围只有-128 ~ 127,如果你强制的转换过去的值不在这个范围,程序不会报错,但是拿到的结果就不是你想要的了。说你的程序:设a=1,b=2,c=3 计算表达式a+=c++\/--b c++ 此时...

相似回答