這篇文章主要介紹了python 整數越界問題詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨着小編來一起學習學習吧
python 內部自帶大整數運算能力,整數運算不會溢出,只要內存足夠,就oK
下面的例子演示了兩個32位整數加法的情況(通過位運算實現),爲了模擬溢出的效果,必須人工的進行位運算,~運算符除了求反,還是二進制的補運算符,運算過後的二進制數字按照補碼解釋,例如 ~(0011 1100) = (1100 0011) = -61
def getSum(a, b): """ :type a: int :type b: int :rtype: int """ MAX = 0X7fffffff MIN = 0X80000000 while b != 0 : a,b = a^b,(a&b)<<1 print(" a = {0:b},b = {1:b}".format(a,b)) return a def getSum_(a, b): """ :type a: int :type b: int :rtype: int """ MAX = 0x7FFFFFFF MIN = 0x80000000 mask = 0xFFFFFFFF while b != 0: a, b = (a ^ b) & mask, ((a & b) << 1) & mask print(type(a)) print(" a = {0:b},b = {1:b}".format(a,b)) return a if a <= MAX else ~(a^mask) print(getSum_(-1,-1)) print(getSum(-1,1))
補充:python 循環內部添加多個條件判斷會出現越界
1.循環遍歷數組是,想添加條件修改時,只刪除第一個
# -*- coding: utf-8 -*- a=[11,22,33,44,55] for i in a: if i == 11 or i ==22: a.remove(i) for i in a: print(i) ''' 33 55 [Finished in 0.1s] '''
2.應該引入被刪除爲一個數組
# -*- coding: utf-8 -*- a=[11,22,33,44,55] b=[] for i in a: if i == 11 or i ==22: b.append(i) for i in b: a.remove(i) for i in a: print(i) ''' 33 44 55 [Finished in 0.1s] '''
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持神馬文庫。