java 我们可以直接使用 * 运算符将两个字节相乘吗

fjaof16o  于 2022-12-28  发布在  Java
关注(0)|答案(4)|浏览(132)

我需要对一个字节(2*x*x)+x执行以下操作,其中x是一个单字节。我可以直接执行该操作吗,就像我们对int所做的那样。如果不能,我们如何执行上述操作。

uplii1fm

uplii1fm1#

你试过以下方法吗?

byte x =
int f = 2 * x * x + x;

作为一个练习,我建议你打印出每一个可能的字节值的结果,看看你是否得到了期望的值。

dgiusagp

dgiusagp2#

是的。
Java整数运算是二进制补码;这意味着(只要有足够的比特来写下这些值)加长或缩短字段不会影响结果。
注意1:检查溢出。如果结果不在128/-127范围内,它将不适合一个字节(或255/0表示无符号)。
注意2:浮点型和双精度型不是整数运算的一部分。

t9aqgxwy

t9aqgxwy3#

显然,你相信运算符的存在是因为编译器允许它,但你不相信JVM会正确地计算结果,为什么?
测试起来有多难?每个字节只有256个值。

wqnecbli

wqnecbli4#

可能有两种不同的情况:
byte a = 2; byte b = 2; byte c = a*b它是正确的,但是
byte a = 22; byte b = 22; byte c = a*b这是不正确的。因为当赋值给a和b时,我们给出了小于127的值,但相乘后,该值比一个字节长,这就是为什么我们需要一个更大的数据类型来存储c的值。
对于这种情况,可以使用int c = a*b;

相关问题