2015-05-11 31 views

回答

2

Python無法在1位內存或甚至1個字節中存儲1位值。有像類型指針和引用計數的開銷,它的int類型總是使用固定數量的字節來存儲它所代表的實際數量,根據您的Python版本,它可以是4或8個字節。 (也有long類型,它不是固定大小,但即使是那種類型使用大於一個字節的塊)。

+0

謝謝,我現在明白了。但是,現在我有一個後續問題。一個二進制變量是否可以存儲在一個文件中,以創建一個具有1位內容的文件? – user3264316

+1

@ user3264316否,因爲現在您正在處理文件管理,當然這不會將扇區分塊爲1位段。 –

1

user2357112在描述什麼sys.getsizeof爲您提供了很好的幫助。相反,如果你要問「我如何獲得一些顯著的位數,」你可以嘗試:

len(bin(some_num)) - 2 # strips 0b 

或者,並感謝user2357112的評論:

max(some_num.bit_length(), 1) # minimum bound since (0).bit_length() == 0 
+1

或'some_num.bit_length()',儘管它有'0 .bit_length()== 0'的區別。 – user2357112

1

就像user2357112所說的那樣,這24個字節大多包含管理數據。它確實獲得大於24,你只是沒有嘗試過足夠多的尚未:

>>> sys.getsizeof(0b111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111) 
42 

如果你要問「有多少位的號碼有」使用方法bit_length

>>> 0b0.bit_length() 
0 
>>> 0b1.bit_length() 
1 
>>> 0b1010101.bit_length() 
7 
1

0b0不代表1位 0,但整數爲零。前綴0b只是在base-2而不是base-10系統中編寫數字的一種方法。

要獲取表示整數所需的位數,請使用bit_length方法。

相關問題