python中的進製 python中的進製轉換

2021-10-17 00:02:51 字數 2252 閱讀 4587

1.簡介

該篇部落格主要闡述如何將按16進製制儲存的32位浮點數字串轉換為十進位制數

資料示例如下:

『3f cc 00 00』   ->  1.59375                         'ff 7f ff ff'  ->  -3.40282346639e+38

『41 a4 c0 00』  ->  20.59375

注:這裡的位元組序按照大端法;小端法需要增加一行**(已經表明)

2.原理

顧名思義,32位浮點數共計32位,有三個組成部分:符號位s、階碼e、尾數m。s、e、m所佔位數分別為1、8、23位。

注釋:s表示正負(0為正,1為負);e用移碼表示(偏移量為127);m不足23位時右端補0

正向推理:

已知十進位制數20.59375,它的二進位制形式為 10100.10011,移動小數點位置10100.10011=1.010010011×24

注:移動小數點是移動到整數字是1就停止,此時為左移;也可能右移,例如 0.59375 = 0.10011 = 1.0011 x 2-1

1.符號位s:

該十進位制數為正,s = 0

2.階碼e:

指數為4,加上偏移量127後為131,轉換為2進製數 e = 1000 0011

3.尾數m:

尾數為小數部分,當位數不足23位時用0補齊 m = 010 0100 1100 0000 0000 0000

4.32位浮點數:

s+e+m -> 0 1000 0011 010 0100 1100 0000 0000 0000

將32位浮點數轉換為16進製制:

01000001  10100100  11000000  00000000  ->  41  a4  c0  00

逆向推理:

已知『41 a4 c0 00』,將它轉換為十進位制數

第一步:變為二進位制

41  a4  c0  00  ->  01000001  10100100  11000000  00000000

第二步:取s、e、m

s = 0

e = 1000 0011

m = 010 0100 1100 0000 0000 0000

第三步:公式計算

32位浮點數 = (-1)^s  *  (1+m10)  *  2^e10

指數 e10= (e)10 - 127 = (1000 0011)10 - 127 = 4

十進位制浮點小數 m10 = (0.m)10 = (0.0100 1001 1)10= 0.287109375

32位浮點數 = (-1)^s  *  (1+m10)  *  2^e10

則32位浮點數 = (-1)^0 * (1 + 0.287109375) * 2^4 = 20.59375

3.**

defhextonum(string):#16進製制轉2進製

num_2 = ''new_list= str(string).strip().split(' ')

# new_list.reverse() # 如果使用小段法,則需要增加該行**for l innew_list:

temp= bin(int(l, 16))[2:]if len(temp) != 8:

temp= '0' * (8 - len(temp)) +temp

num_2= num_2 +temp#符號位、階碼、尾數

s2 =num_2[0]

e2= num_2[1:9]

m2= num_2[9:]prints2, e2, m2#計算小數部分(10進製)

if len(m2) !=0:

temp=0for i in range(1, len(m2)+1):

temp= temp + int(m2[i - 1]) * (2 ** (-1 *i))

latter10=tempelse:

latter10=0printlatter10#計算階數

e10 = int(e2, 2) - 127

#計算公式

num_10 = ((-1)**int(s2))*(1 + latter10)*(2**e10)returnnum_10

s= '41 a4 c0 00'

printhextonum(s)print (-1)**0 * (1+0.287109375) * (2**4)

結果如下:

0 10000011 01001001100000000000000

0.287109375

20.59375

20.59375

python 進製 Python中的加法進製

我重寫了你的進製函式,使它工作,但實現完全不同。首先將數字串起來,這樣就可以遍歷它們。然後通過附加0使它們等長,並迴圈檢查每個數字的和 加上進製 是否超過9。如果是,增加計數器。希望這有助於 number1 int input number 1 number2 int input number 2 ...

python中迭代器的基本方法 Python迭代器

迭代器是可以迭代的物件。在本教程中,您將了解迭代器的工作原理,以及如何使用 iter 和 next 方法構建自己的迭代器。迭代器在python中無處不在。它們優雅地實現在迴圈,推導,生成器等中,但隱藏在明顯的視覺中。python中的迭代器只是乙個可以迭代的物件。乙個將一次返回資料的物件或乙個元素。從...

python中var是什麼變數 Python 變數

1.python的變數是什麼 變數是用來儲存電腦程式中的資訊,唯一的目的是將資料儲存在記憶體中。2.python變數的組成 變數由字母 數字 下劃線組成 變數的第一位不能是數字,可以是字母或下劃線 python中的關鍵字不能作為變數。python中的關鍵字 and as assert break c...