溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

python編程題之二進(jìn)制加減法運(yùn)算的案例分析

發(fā)布時(shí)間:2020-10-27 09:24:11 來(lái)源:億速云 閱讀:340 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下python編程題之二進(jìn)制加減法運(yùn)算的案例分析,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

關(guān)于二進(jìn)制運(yùn)算符:

我們知道,十進(jìn)制是逢十進(jìn)一,譬如11,左邊的1在十位上,代表10,右邊的1在個(gè)位上,就是1。把1502這個(gè)數(shù)字拆開(kāi)看,就是有1個(gè)1000,5個(gè)100,0個(gè)10,2個(gè)1,

1502=1*10^3+5*10^2+0*10^1+2*10^0 ,也就是說(shuō),十進(jìn)制中的位數(shù)對(duì)應(yīng)的就是10的冪,個(gè)位是0次冪,十位是1次冪,百位是2次冪,以此類(lèi)推……

同理,二進(jìn)制中的位數(shù)對(duì)應(yīng)的就是2的冪,那么對(duì)于二進(jìn)制下的1010,轉(zhuǎn)化成十進(jìn)制下的數(shù),就是1*2^3+0*2^2+1*2^1+0*2^0=8+2=10 。

用2進(jìn)制數(shù)數(shù),首先是0,然后是1,接下去是10,而不是2,因?yàn)槎M(jìn)制中只有0和1。

小白可以練習(xí)一下從0寫(xiě)到10,寫(xiě)完對(duì)一下結(jié)果

python編程題之二進(jìn)制加減法運(yùn)算的案例分析

關(guān)于二進(jìn)制加減法:

實(shí)例問(wèn)題:給定兩個(gè)二進(jìn)制字符串,返回他們的和(用二進(jìn)制表示)。輸入為非空字符串且只包含數(shù)字 1 和 0。

示例1、

輸入: a = "11", b = "1"
輸出: "100"

示例2、

輸入: a = "1010", b = "1011"
輸出: "10101"

解題代碼展示:

class Solution:
 def addBinary(self, a: str, b: str) -> str:
 max_len = max(len(a),len(b))
#使用zfill()保證a和b長(zhǎng)度相同
 a = a.zfill(max_len)
 b = b.zfill(max_len)
 c = [int(a[i]) + int(b[i]) for i in range(max_len-1,-1,-1)][::-1]
 for i in range(len(c)-1,-1,-1):
 print(c[i])
 if 1<int(c[i]):
 c[i] = c[i]-2
 if i==0:
 c=['1']+c
 else:
 c[i-1]=int(c[i-1]) +1
 h=''
 for i in c:
 h+=str(i)
 return h

看完了這篇文章,相信你對(duì)python編程題之二進(jìn)制加減法運(yùn)算的案例分析有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI