Java Card平台下两short无符号加法的进位位获取方法
如何在Java Card中将两个short当作无符号类型相加并获取进位位?
我希望将两个short当作无符号类型进行加法运算,并获取加法产生的进位位。例如,以下二进制表示的short:
1111111111111111 (-1) + 0000000000000001 (1) ---------------- 0000000000000000 (0)
它们相加产生的进位位为1。
是否有办法从补码加法中获取该进位位?
解决方案的唯一限制是:不能使用int、long、char这些数据类型,因为我在Java Card平台上开发
更新
我需要实现这个功能的原因是用两个short来模拟整数加法。我正在Java Card平台上开发,该平台不支持整数类型,因此想用两个short来表示一个整数。
WJS的答案完全符合我的需求。以下代码块展示了我想要实现的功能:
short xA = (short) 0b1111111111111111, xB = (short) 0b1111111111111111; short yA = (short) 0b0000000000000000, yB = (short) 0b0000000000000001; short targetA, targetB; targetA = (short) (xA + yA + (xB < 0 && yB < 0 || xB < 0 && yB >= -xB || yB < 0 && xB >= -yB ? 1 : 0)); targetB = (short) (xB + yB);
其中A是整数的高位部分,B是低位部分。
这段代码等价于整数加法中的target = x + y。
内容的提问来源于stack exchange,提问作者the thinker
相关产品推荐
相关产品推荐

