python 除法取模_跟我一起学python | 探究05
算術(shù)運(yùn)算、比較運(yùn)算、賦值運(yùn)算、位和位運(yùn)算、運(yùn)算優(yōu)先級(jí)
python里的算術(shù)運(yùn)算
我們最熟悉的計(jì)算就是算術(shù)運(yùn)算,加減乘除等。在python的算術(shù)運(yùn)算中,除了四則運(yùn)算外,還有冪運(yùn)算、取模、取整運(yùn)算。
什么是取模、取整運(yùn)算呢?取模和取整運(yùn)算和除法相關(guān)。取模即取除法的余數(shù),取整即取除法的商。
11%7取模運(yùn)算,結(jié)果為:4
11//7取整運(yùn)算,結(jié)果為:1
如果是負(fù)數(shù)取模取整,會(huì)是怎樣的結(jié)果呢?
i1=-11%7i2=-11%-7i3=-11//7i4=-11//-7print(i1,i2,i3,i4)結(jié)果是:3 -4 -2 1
下面有一個(gè)混合運(yùn)算,猜心算一下運(yùn)行結(jié)果會(huì)是怎樣的呢?
4*2**3//6+2%7-2
很顯然,這里就牽涉到不同運(yùn)算之間的優(yōu)先級(jí)。
算術(shù)運(yùn)算里,優(yōu)先級(jí)從高到低是:冪運(yùn)算、乘除取模取整、加減
4*2**3//6+2%7-2運(yùn)行結(jié)果:5 和你心算的結(jié)果是不是一樣呢?
python里的比較運(yùn)算
所謂的比較運(yùn)算就是等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(
9!=10運(yùn)行結(jié)果:True
9!=9運(yùn)行結(jié)果:False
python里的賦值運(yùn)算
在程序里,賦值也是一種運(yùn)算。賦值的符號(hào)“=”,以后我們還會(huì)碰到諸如:“+=”、“-=”……等賦值運(yùn)算。
來(lái)看一個(gè)范例:
i=5+4==6-1?print(i)運(yùn)行結(jié)果為:False
這個(gè)混合運(yùn)算里有算術(shù)運(yùn)算、比較運(yùn)算和賦值運(yùn)算,這些運(yùn)算的優(yōu)先級(jí),從高到低依次是:算術(shù)運(yùn)算、比較運(yùn)算、賦值運(yùn)算。
i=5+4==6-1
i=9==5 (9不等于5,所以此比較運(yùn)算結(jié)果為False)
i=False
python里的位運(yùn)算
什么是“位”?
“位”是數(shù)據(jù)存儲(chǔ)的最小單位。在計(jì)算機(jī)中二進(jìn)制數(shù)系統(tǒng)中,每個(gè)0或1就是一個(gè)“位”,英文寫(xiě)作bit,簡(jiǎn)記為b,稱(chēng)為比特?!拔弧本腿缤聢D中的格子,每一個(gè)格子就是一個(gè)“位”,而每一個(gè)“位”存儲(chǔ)的數(shù)據(jù)只有兩種可能,要么是“0”,要么是“1”。我們將8個(gè)“位”稱(chēng)為一個(gè)“字節(jié)”,英文是Byte。“位”和“字節(jié)”的轉(zhuǎn)換公式是:8b=1B。字節(jié)大小的轉(zhuǎn)換關(guān)系是這樣的:1024B=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB……
對(duì)于“位”有一些了解了。下面我們?cè)賮?lái)復(fù)習(xí)一下二進(jìn)制。
和滿(mǎn)10進(jìn)一位的十進(jìn)制不同,二進(jìn)制是滿(mǎn)2就要進(jìn)一位的一種進(jìn)制,二進(jìn)制只有兩個(gè)數(shù)值:0和1。如果你初次接觸二進(jìn)制,建議你不妨先做一個(gè)將十進(jìn)制的0-10轉(zhuǎn)換成二進(jìn)制的練習(xí)。最容易犯錯(cuò)的地方是十進(jìn)制的4和8。下圖是十進(jìn)制0-10對(duì)應(yīng)的二進(jìn)制,看看你轉(zhuǎn)換對(duì)了沒(méi)有。
有了“位”的理解和二進(jìn)制的知識(shí),我們就來(lái)探究一下基于二進(jìn)制的位運(yùn)算。
—— “&”按位與的運(yùn)算 ——按位與的運(yùn)算規(guī)則是:
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
或許這個(gè)規(guī)則不太好理解,我借用電路來(lái)說(shuō)明一下。
開(kāi)關(guān)開(kāi)就是“1”,關(guān)就是“0”;燈亮是“1”,燈滅是“0”。
嘗試用python代碼來(lái)實(shí)現(xiàn)一下:8&6
python的位運(yùn)算也是先將十進(jìn)制數(shù)值化為二進(jìn)制后再進(jìn)行的運(yùn)算。
print(8&6)運(yùn)算結(jié)果是:0
我們?cè)賮?lái)人工列式演算一下,一來(lái)校驗(yàn)結(jié)果,二來(lái)清晰地理解按位與的運(yùn)算過(guò)程:
計(jì)算一下“10&6”呢?我們先人工列式演算一下:
python代碼來(lái)運(yùn)行:
print(10&6)運(yùn)行的結(jié)果果真是:2
—— “ | ”按位或的運(yùn)算 ——按位或的運(yùn)算規(guī)則是:
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1?
1 | 1 = 1
為了方便大家理解,我也同樣借用電路來(lái)說(shuō)明“按位或”的運(yùn)算規(guī)則。
開(kāi)關(guān)開(kāi)就是“1”,關(guān)就是“0”;燈亮是“1”,燈滅是“0”。
我想算算“8|6”,用python代碼來(lái)運(yùn)算。
print(8|6)運(yùn)行結(jié)果是:14我再來(lái)用python算一算“10|6”print(10|6)運(yùn)行結(jié)果還是:14 ? 嗯?怎么是一樣的答案?
好吧,我們來(lái)人工列式演算一下,一來(lái)校驗(yàn)結(jié)果,二來(lái)清晰地理解按位或的運(yùn)算過(guò)程:
?—— “ ^ ”按位異或的運(yùn)算 ——什么是“異或”?“異或”和“或”有什么不同呢?
我們用維恩圖來(lái)做個(gè)說(shuō)明:
“異或”和“或”在運(yùn)算上有怎樣的不同呢?我列表做了一個(gè)對(duì)比。
兩個(gè)計(jì)算的不同之處,我用黃色框凸顯出來(lái)。
我們現(xiàn)在用python編碼來(lái)算算“8^6”
print(8^6)運(yùn)行結(jié)果是:14 和“按位或”的計(jì)算結(jié)果一樣,那么,“10^6”的計(jì)算結(jié)果也還是14嗎?
print(10^6)運(yùn)行結(jié)果是:12為什么“10^6”和“8^6”“按位或”的計(jì)算結(jié)果是一樣的,但是“按位異或”的計(jì)算結(jié)果卻不一樣呢?
我們用人工列式演算一下,你是否看出其中的差別呢?
位運(yùn)算還有“按位取反運(yùn)算”、“左移動(dòng)運(yùn)算”和“右移動(dòng)運(yùn)算”,以后再慢慢學(xué)習(xí)。
此文原發(fā)表于知乎網(wǎng)站。
總結(jié)
以上是生活随笔為你收集整理的python 除法取模_跟我一起学python | 探究05的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 记一次棋牌游戏 cocos2d-x LU
- 下一篇: 风机桨叶故障诊断(五) 修改隐含层神经元