python 內(nèi)部自帶大整數(shù)運(yùn)算能力,整數(shù)運(yùn)算不會溢出,只要內(nèi)存足夠,就oK
下面的例子演示了兩個(gè)32位整數(shù)加法的情況(通過位運(yùn)算實(shí)現(xiàn)),為了模擬溢出的效果,必須人工的進(jìn)行位運(yùn)算,~運(yùn)算符除了求反,還是二進(jìn)制的補(bǔ)運(yùn)算符,運(yùn)算過后的二進(jìn)制數(shù)字按照補(bǔ)碼解釋,例如 ~(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))
補(bǔ)充:python 循環(huán)內(nèi)部添加多個(gè)條件判斷會出現(xiàn)越界
1.循環(huán)遍歷數(shù)組是,想添加條件修改時(shí),只刪除第一個(gè)
# -*- 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.應(yīng)該引入被刪除為一個(gè)數(shù)組
# -*- 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] '''
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
