2017-07-19 91 views
0

在Quora上查看這個問題HERE(「數據是以十六進制還是二進制存儲在寄存器和內存中?」),我認爲最重要的答案是數據持久性是通過硬件的物理特性實現的,並且不直接關聯到二進制,十六進制是否將信息存儲在以二進制形式構造的寄存器/存儲器中?

我一直認爲電腦是'二元'的,但剛剛意識到這隻適用於組件的使用(磁上/下或開/關晶體管),而不一定是組織,例如,內存內容。

即你可以,理論上,在內存中創建一個抽象用「二進制組件」但是這不是二進制,像這樣:

100000110001010001100 
100001001001010010010 
111101111101010100001 
100101000001010010010 
100100111001010101100 

然後認識到,作爲(不好拉)圖像'hello',而不是'hello'的ASCII編碼。

SO(What's the difference between a word and byte?)上的一個答案提到處理器可以處理「單詞」,即一次處理幾個字節,所以雖然信息表示必須是二進制的,但我不明白爲什麼信息處理必須是這樣。

計算機可以直接對十六進制進行運算嗎?在這種情況下,內存/寄存器中信息的內部表示是二進制還是十六進制?

+0

恩,你會叫一個8位寄存器操作,比如二進制補碼整數否定還是算術左移,256位或者你會調用這個二進制嗎? –

+0

@TomBlodget我沒有CS背景,否則我想這種類型的事情(低級計算機功能)會在我大學時代被覆蓋。所以我其實不知道你的意思...... –

+0

但是。其實。術語'8位寄存器操作回答了我的問題。我想知道是否每個操作都是在一個比特級上完成的 –

回答

1

也許「數字計算機」將是一個很好的開始術語,然後從那裏「二進制數字」(「位」)。在電子方面,這些值的術語有時是「高」和「低」。你說得對,之後的一切都取決於手術。大多數時候,比特組一起操作。通常組是1,8,16,32和64位。這些位的含義取決於程序,但某些操作與某種程度的含義並行不悖。

當一組比特的含義未知或不重要時,人們喜歡能夠辨別每個比特的值。可以使用二進制,但超過8位很難讀取。儘管對4位組進行操作很少見,但十六進制更具可讀性,通常與位數無關。有時使用八進制,但是基於上下文,其中對3位的子組有意義或避免超過9位。

整數可以以二進制補碼格式存儲,並且通常CPU具有用於這樣的整數的指令。一旦這樣的操作是否定的。對於一組8位,它將映射1到-1,... 127到-127,和-1到1,... -127到127,以及0到0和-128到-128。十進制對人類來說可能是最有價值的,不是基數256,基數2或基數16.在無符號十六進制中,這將是01到FF,...,00到00,80到80.

有關如何介紹CPU可能在一組位上做整數加法,見adder circuits

其他數字格式包括IEEE-754浮點數和二進制編碼的十進制數。

我想你明白數字電路是二元的。所以,基於上述情況,是的,儘管有實際的存儲,但操作在更高的概念層面上運行。

+0

謝謝。這是一個有用的鏈接。看這句話:'我們要構建執行二進制加法的組合邏輯電路'我是否正確地假設每個電路本身都是二進制的?因爲電可以打開或關閉(只能攜帶一個二進制數字)......但是,電路可能在理論上被設計爲執行十六進制加法,但是然後各個步驟仍然是二進制的。這會令人困惑...... –

+0

這裏的關鍵CS概念是組合和迭代。數字是硬件簡單的二進制。它有時組成二進制編碼的十進制數,用於非整數的精度。對於十六進制沒有這樣的動機。這是顯示位的簡單方法,特別是如果分組爲4s或8s等。 –