假设输入是两个整数值。我想将两个整数值转换为二进制,执行二进制加法,并给出带有忽略的结果(等价整数)。我该怎么做呢。
想到的一个想法是以某种方式将它们转换为二进制字符串并使用算法进行二进制加法,然后忽略进位(如果进位存在则从字符串中删除进位字符)。
示例输入
一个数字:1 第二个数字:3
示例输出
2 说明: 总和中的最低位是1 + 1 = 0 下一位是0 + 1 = 1(丢弃前一位的进位) 答案是二进制10,即2。
答案 0 :(得分:5)
您可能正在寻找按位XOR(异或),它将为给定输入提供以下输出:
^ | 0 | 1
--+---+--
0 | 0 | 1
--+---+--
1 | 1 | 0
它的行为类似于二进制加法(1+1 = 10
),但如果两个操作数均为1
,则忽略溢出。
int a = 5; // 101
int b = 6; // 110
a ^ b; // 3 or 011
答案 1 :(得分:2)
这只是二进制中两个整数的XOR
。在Java中你可以做到
result = v1 ^ v2;