在python语言中下列是二进制整数_Python从菜鸟到高手(5):数字
Python從菜鳥到高手(5):數(shù)字
發(fā)布時(shí)間:2020-07-12 02:17:50
來(lái)源:51CTO
閱讀:1005
作者:androidguy
1 基礎(chǔ)知識(shí)
Python語(yǔ)言與其他編程語(yǔ)言一樣,也支持四則運(yùn)算(加、減、乘、除),以及圓括號(hào)運(yùn)算符。在Python語(yǔ)言中,數(shù)字分為整數(shù)和浮點(diǎn)數(shù)。整數(shù)就是無(wú)小數(shù)部分的數(shù),浮點(diǎn)數(shù)就是有小數(shù)部分的數(shù)。例如,下面的代碼是標(biāo)準(zhǔn)的四則運(yùn)算表達(dá)式。
2 + 4
4 * 5 + 20
5.3 / 7
(30 + 2) * 12
如果要計(jì)算兩個(gè)數(shù)的除法,不管分子和分母是整數(shù)還是浮點(diǎn)數(shù),使用除法運(yùn)算符(/)的計(jì)算結(jié)果都是浮點(diǎn)數(shù)。例如1/2的計(jì)算結(jié)果是0.5,2/2的計(jì)算結(jié)果是1.0。要想讓Python解釋器執(zhí)行整除操作,可以使用整除運(yùn)算符,也就是兩個(gè)斜杠(//)。使用整除運(yùn)算符后,1 // 2的計(jì)算結(jié)果是0,2 // 2的結(jié)果是1。
整除運(yùn)算符不僅能對(duì)整數(shù)執(zhí)行整除操作,也能對(duì)浮點(diǎn)數(shù)執(zhí)行整除操作,在執(zhí)行整除操作時(shí),分子分母只要有一個(gè)是浮點(diǎn)數(shù),那么計(jì)算結(jié)果就是浮點(diǎn)數(shù)。例如,1.0 // 2的計(jì)算結(jié)果是0.0,2.0 // 2的結(jié)果是1.0。
除了四則運(yùn)算符外,Python還提供了兩個(gè)特殊的運(yùn)算符:%(取余運(yùn)算符)和**(冪運(yùn)算符)。取余運(yùn)算符用于對(duì)整數(shù)和浮點(diǎn)數(shù)執(zhí)行取余操作。例如,5 % 2的計(jì)算結(jié)果是1,而5.0 % 2的計(jì)算結(jié)果是1.0。從這一點(diǎn)可以看出,%和//類似,只要分子分母有一個(gè)是浮點(diǎn)數(shù),計(jì)算結(jié)果就是浮點(diǎn)數(shù)。
冪運(yùn)算符用于計(jì)算一個(gè)數(shù)值的冪次方。例如,2 3的計(jì)算結(jié)果是8,3.2 2的計(jì)算結(jié)果是10.24。
到現(xiàn)在為止,一共介紹了8個(gè)運(yùn)算符,它們是圓括號(hào)((…))加(+)、減(-)、乘(*)、除(/)、整除(//)、取余(%)和冪運(yùn)算符(**)。其中減號(hào)(-)也可以用于負(fù)號(hào)(一元運(yùn)算符),所以現(xiàn)在涉及到9個(gè)運(yùn)算符。既然涉及到這么多運(yùn)算符,那么就有一個(gè)優(yōu)先級(jí)的問(wèn)題,也就是說(shuō),同一個(gè)表達(dá)式中包含有多個(gè)不同的運(yùn)算符,需要先計(jì)算優(yōu)先級(jí)高的運(yùn)算符,如果優(yōu)先級(jí)相同個(gè),那么就按從左向右的順序執(zhí)行。
這9個(gè)運(yùn)算符的優(yōu)先級(jí)順序如下圖所示。越靠前優(yōu)先級(jí)越高,同一行的運(yùn)算符的優(yōu)先級(jí)相同。
下面的代碼演示了Python語(yǔ)言中運(yùn)算符的使用方法,在編寫Python代碼時(shí),應(yīng)該注意運(yùn)算符的優(yōu)先級(jí)問(wèn)題。
print(2 + 4) # 運(yùn)算結(jié)果:6
print(126 - 654) # 運(yùn)算結(jié)果:-528
print(6 + 20 * 4) # 運(yùn)算結(jié)果:86
print((20 + 54) * 30) # 運(yùn)算結(jié)果:2220
print(1/2) # 運(yùn)算結(jié)果:0.5
print(1//2) # 運(yùn)算結(jié)果:0
print(3/2) # 運(yùn)算結(jié)果:1.5
print(3//2) # 運(yùn)算結(jié)果:1
print(4**3) # 運(yùn)算結(jié)果:64
print(3 + 5 * -3 ** 4 - (-5)**2) # 運(yùn)算結(jié)果:-427
# 用變量操作數(shù)值
x = 30
y = 50
k = 10.2
print(x + y * k) # 運(yùn)算結(jié)果:540.0
2 大整數(shù)
對(duì)于有符號(hào)32位整數(shù)來(lái)說(shuō),可表示的最大值是2147483647(2^31 -1),可表示的最小值是-2147483648(-2^31),如果超過(guò)這個(gè)范圍,有符號(hào)32位整數(shù)就會(huì)溢出。不過(guò)在Python語(yǔ)言中,可以處理非常大的整數(shù),并不受位數(shù)限制。例如,下面表達(dá)式的輸出結(jié)果就超出了32位整數(shù)的范圍。
print(2 ** 35) # 輸出2的35次冪,輸出結(jié)果是34359738368
讓我們?cè)贀Q個(gè)更大的數(shù),看看會(huì)不會(huì)溢出。
print(2**630 * 100000) # 2的630次冪再乘10萬(wàn)
上面這行代碼的輸出結(jié)果如下:
445550841564667501820426914619169074696604346410992180720624269326101090547722401025968047980212050759633038044296328838934443820446820117016861457004122479321483854917994624031530682836582400000
很顯然,Python語(yǔ)言仍然可以正確處理2*630 100000的計(jì)算結(jié)果。因此,在Python語(yǔ)言中使用數(shù)字不需要擔(dān)心溢出,因?yàn)镻ython語(yǔ)言可以處理非常大的數(shù)字,這也是為什么很多人使用Python語(yǔ)言進(jìn)行科學(xué)計(jì)算和數(shù)據(jù)分析的主要原因之一。
3. 二進(jìn)制、八進(jìn)制和十六進(jìn)制
Python語(yǔ)言可以表示二進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù)。表示這3個(gè)進(jìn)制的數(shù),必須以0開頭,然后分別跟著表示不同進(jìn)制的字母。表示二進(jìn)制的字母是b,表示八進(jìn)制的字母是o(這是英文字母中小寫的o,不要和數(shù)字0搞混了),表示十六進(jìn)制的字母是x。因此,二進(jìn)制數(shù)的正確寫法是0b110011,八進(jìn)制數(shù)的正確寫法是0o56432,十六進(jìn)制數(shù)的正確寫法是0xF765A。
除了這3種進(jìn)制外,前面章節(jié)一直使用的是十進(jìn)制。因此,Python語(yǔ)言一共可以表示4種進(jìn)制:二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制。Python語(yǔ)言提供了一些函數(shù)用于在這4種進(jìn)制數(shù)之間進(jìn)行轉(zhuǎn)換。
如果是從其他進(jìn)制轉(zhuǎn)換到十進(jìn)制,需要使用int函數(shù),該函數(shù)有兩個(gè)參數(shù),含義如下:
? 第1個(gè)參數(shù):字符串類型,表示待轉(zhuǎn)換的二進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)。參數(shù)值只需要指定帶轉(zhuǎn)換的數(shù)即可,不需要使用前綴,如二進(jìn)制直接指定11011,不需要指定0b11011。
? 第2個(gè)參數(shù):數(shù)值類型,表示第1個(gè)參數(shù)值的進(jìn)制,例如,如果要將二進(jìn)制轉(zhuǎn)換為十進(jìn)制,第2個(gè)參數(shù)值就是2。
int函數(shù)返回一個(gè)數(shù)值類型,表示轉(zhuǎn)換后的十進(jìn)制數(shù)。
下面的代碼將二進(jìn)制數(shù)110011轉(zhuǎn)換為十進(jìn)制數(shù),并輸出返回結(jié)果。
print(int("110011",2)) // 輸出結(jié)果:51
如果要從十進(jìn)制轉(zhuǎn)換到其他進(jìn)制,需要分別使用bin、oct和hex函數(shù)。bin函數(shù)用于將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù);oct函數(shù)用于將十進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù),hex函數(shù)用于將十進(jìn)制數(shù)轉(zhuǎn)換十六進(jìn)制數(shù)。這3個(gè)函數(shù)都接收一個(gè)參數(shù),就是待轉(zhuǎn)換的十進(jìn)制數(shù)。不過(guò)要注意,這3個(gè)函數(shù)的參數(shù)值也可以是二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù),也就是說(shuō),這3個(gè)函數(shù)可以在二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制之間互轉(zhuǎn)。
下面的代碼將十進(jìn)制數(shù)54321轉(zhuǎn)換為十六進(jìn)制數(shù),并輸出轉(zhuǎn)換結(jié)果。
print(hex(54321)) # 輸出結(jié)果:0xd431
下面的代碼演示了Python語(yǔ)言中二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制數(shù)之間的轉(zhuǎn)換。
print(0b110011) # 輸出二進(jìn)制數(shù)
print(0o123) # 輸出八進(jìn)制數(shù)
print(0xF15) # 輸出十六進(jìn)制數(shù)
print(bin(12)) # 十進(jìn)制轉(zhuǎn)二進(jìn)制,輸出結(jié)果:0b1100
print(int("10110",2)) # 二進(jìn)制轉(zhuǎn)十進(jìn)制,輸出結(jié)果:22
print(int("0xF35AE",16)) # 十六進(jìn)制轉(zhuǎn)十進(jìn)制,輸出結(jié)果:996782
print(hex(54321)) # 十進(jìn)制轉(zhuǎn)十六進(jìn)制,輸出結(jié)果:0xd431
print(bin(0xF012E)) # 十六進(jìn)制轉(zhuǎn)二進(jìn)制,輸出結(jié)果:0b11110000000100101110
print(hex(0b1101101)) # 二進(jìn)制轉(zhuǎn)十六進(jìn)制,輸出結(jié)果:0x6d
print(oct(1234)) # 十進(jìn)制轉(zhuǎn)八進(jìn)制,輸出結(jié)果:0o2322
print(int("76532", 8)) # 八進(jìn)制轉(zhuǎn)十進(jìn)制,輸出結(jié)果:32090
程序運(yùn)行結(jié)果如下圖所示。
《Python從菜鳥到高手》開始轉(zhuǎn)載了,敬請(qǐng)關(guān)注
4 數(shù)字的格式化輸出
在輸出數(shù)字時(shí),有時(shí)需要對(duì)其進(jìn)行格式化。例如,在輸出12.34時(shí),只希望保留小數(shù)點(diǎn)后1位數(shù)字,也就是12.3,或整數(shù)位按6位輸出,不足前面補(bǔ)0,也就是000012.34。Python語(yǔ)言中提供了format函數(shù)用于對(duì)數(shù)字進(jìn)行格式化。format函數(shù)有兩個(gè)參數(shù),含義如下:
? 第1個(gè)參數(shù):要格式化的數(shù)字。
? 第2個(gè)參數(shù):格式字符串。
format函數(shù)的返回值就是數(shù)字格式化后的字符串。
下面的代碼演示了format函數(shù)在格式化數(shù)字方面的應(yīng)用。
x = 1234.56789
# 小數(shù)點(diǎn)后保留兩位數(shù),輸出結(jié)果:'1234.57'
print(format(x, '0.2f'))
# 數(shù)字在12個(gè)字符長(zhǎng)度的區(qū)域內(nèi)右對(duì)齊,并保留小數(shù)點(diǎn)后1位數(shù)字,
# 輸出結(jié)果:' 1234.6'
print(format(x, '>12.1f'))
# 數(shù)字在12個(gè)字符長(zhǎng)度的區(qū)域內(nèi)左對(duì)齊,并保留小數(shù)點(diǎn)后3位數(shù)字,緊接著輸出20,
# 輸出結(jié)果:'1234.568 20'
print(format(x, '<12.3f'), 20)
# 數(shù)字在12個(gè)字符長(zhǎng)度的區(qū)域內(nèi)右對(duì)齊,并保留小數(shù)點(diǎn)后1位數(shù)字,數(shù)字前面補(bǔ)0,
# 輸出結(jié)果:'0000001234.6'
print(format(x, '0>12.1f'))
# 數(shù)字在12個(gè)字符長(zhǎng)度的區(qū)域內(nèi)左對(duì)齊,并保留小數(shù)點(diǎn)后1位數(shù)字,數(shù)字后面補(bǔ)0,
# 輸出結(jié)果:'1234.6000000'
print(format(x, '0<12.1f'))
# 數(shù)字在12個(gè)字符長(zhǎng)度的區(qū)域內(nèi)中心對(duì)齊,并保留小數(shù)點(diǎn)后2位數(shù)字,緊接著輸出3,
# 輸出結(jié)果:' 1234.57 3'
print(format(x, '^12.2f'),3)
# 每千位用逗號(hào)(,)分隔,輸出結(jié)果:1,234.56789
print(format(x, ','))
# 每千位用逗號(hào)(,)分隔,并保留小數(shù)點(diǎn)后2位數(shù)字,輸出結(jié)果:1,234.57
print(format(x, ',.2f'))
# 用科學(xué)計(jì)數(shù)法形式輸出數(shù)字,輸出結(jié)果:1.234568e+03
print(format(x, 'e'))
# 用科學(xué)計(jì)數(shù)法形式輸出數(shù)字,尾數(shù)保留小數(shù)點(diǎn)后2位數(shù)字,輸出結(jié)果:1.23E+03
print(format(x, '0.2E'))
程序運(yùn)行結(jié)果如下圖所示。
《Python從菜鳥到高手》已經(jīng)出版,開始連載了,購(gòu)買送視頻課程
總結(jié)
以上是生活随笔為你收集整理的在python语言中下列是二进制整数_Python从菜鸟到高手(5):数字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 后台数据到mysql怎样保持实时更新_京
- 下一篇: 宝塔apache mysql_商淘多商户