擅长:python、mysql、java
<p>如果要通过引发错误来处理溢出,可以这样处理:</p>
<pre><code>def bin_add(a, b):
a = a[:]
for i in range(len(a)-1, -1, -1):
a[i] += b[i]
if a[i] > 1:
if i == 0:
raise ValueError("Overflow")
a[i-1] += 1
a[i] = a[i] % 2
return a
</code></pre>
<p>现在您可以使用它:</p>
<pre><code>>>> a = [1, 0, 1, 0] # 10
>>> b = [1, 1, 1, 0] # 14
>>> bin_add(a, b) # 24 > 15
...
ValueError: Overflow
</code></pre>
<p>请注意,您不必在这里将二进制数转换为十进制数,它将返回一个与输入类似的二进制列表。您也可以轻松地将字符串转换为整数列表:</p>
<pre><code>string = "0101"
lst = list(map(int, string))
lst == [0, 1, 0, 1]
</code></pre>