我决定这样做
- 翻转数字 0=1, 1=0
- LSB 加 1
- 如果进位,则循环直到 array[i]==0
但我坚持最后一点;我怎么能在条件循环中这么说呢?
您正在谈论扩展算术。大多数处理器都有每次加法运算的进位和溢出结果,但 C 不提供对它们的访问。
你的问题是数字越大越长。如果你已经完成了最后一点,并且需要执行,那么你还需要一点!这意味着您需要重新分配位数组(如果您使用的是数组)。
当然,更实用的解决方案是使用本机整数而不是单个位,因为您的处理器已经可以很好地处理二进制补码。然后,您知道如果原始数字等于,则加一会导致进位(unsigned) -1
。根本问题仍然存在;如果你需要执行最后一个unsigned
你需要分配另一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)