Java - 字节的模数加法

时间:2013-04-04 03:02:28

标签: java byte modulo

我正在尝试用java中的两个字节执行模加法,结果得到第三个字节。

这是我正在使用的代码:

public static byte modAdd(byte byte1,byte byte2){
    int int1 = ((int)byte1)+128;
    int int2 = ((int)byte2)+128;
    int outNum = int1+int2;
    if(outNum>255){
        outNum-=255;
    }
    outNum-=128;
    return (byte)outNum;
}

但是,这有一些问题 - 当byte1为0x7F,而byte2为0x00时,我的模数减法代码不返回0x7F - 而是返回0x80。

我可以识别这个案子,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:3)

您只需用byte1 + byte2替换该函数即可。无论整数大小如何,整数加法都会产生“模块化”溢出。没有必要进行所有的铸造。

您找到错误的原因在于此行:

    outNum-=255;

那应该是256