2014-08-27 80 views
0

所以今天我在CS班,我們正在討論二進制。例如數字26 110010.我的教授說,計算機以8位的字節存儲數據,所以26實際上是000110010.這不是一個巨大的內存浪費?我的意思是它只有三位,但我假設它是否對8位以下的所有東西都進行了這樣的處理。如果一個數字需要像110010101(405)這樣的9位,會發生什麼情況。然後會發生什麼?二進制和內存?

+1

大多數現代機器都是字節可尋址的,一個字節需要8位。如果你想要在一個字節中打包多個數據項,那麼你不能少地址,那麼你需要一些技巧,比如C位字段。如果數據不適合一個字節,那麼您將需要兩個字節,在許多語言中是* short *。等等。你可以爲60美元購買640億比特幣,所以不完全是你擔心的事情。 – 2014-08-27 17:23:06

回答

0

這將浪費更多的內存來跟蹤每個值的開始和結束,以便您可以準確地說明在任意內存分配方案中使用哪些位。

如果您使用的是8位類型,則不能存儲多於11111111(256無符號)。爲了更大,你必須開始使用16位類型,並將405代表爲0000000110010101

0

實際上整數通常以4個字節存儲,所以405將是00000000 00000000 00000001 10010101。事情是CPU一次很好地加載數據字節,不一定是位。這完全是關於CPU上的指令。另外,當你知道每個字節佔用多少字節時,在內存中查找數字會更容易。如果你想要第5個元素,你可以跳過4 * 4個字節,然後直接跳到第5個元素,而不是掃描所有的位,看看每個數字有多長。