本文共 972 字,大约阅读时间需要 3 分钟。
为了求两个整数之和,而不使用+、-、*、/四则运算符,我们可以利用二进制逐位运算的原理。二进制加法中的异或操作(^)可以用来计算每一位的和,而与操作(&)可以用来计算进位。具体来说,逐位相加的结果是异或操作的结果,进位是与操作后的结果左移一位。重复这个过程,直到没有进位为止,最终的数值即为两个整数的和。
例如,对于两个数5(二进制0101)和6(二进制0110),逐位运算如下:
逐位相加,进行异或操作和与操作:
组合结果,得到二进制1011,即十进制11。
基于上述逻辑,我们可以编写如下函数:
写一个函数,求两个整数之和,不得使用+、-、*、/四则运算符。
思路:利用二进制逐位运算,通过异或操作求出每位的和,通过与操作和左移得到进位,最终组合得到结果。
代码实现:
public class Solution { public int Add(int num1, int num2) { while (num2 != 0) { int sum = num1 ^ num2; num2 = (num1 & num2) << 1; num1 = sum; } return num1; } }
函数逐步解释如下:
该方法高效且简洁,有效避免了使用四则运算符,同时保证了函数的性能。
转载地址:http://vogoz.baihongyu.com/