首頁 > 後端開發 > C++ > 在現代計算機中表示和操作資訊 - 第 1 部分

在現代計算機中表示和操作資訊 - 第 1 部分

Patricia Arquette
發布: 2024-10-29 10:45:29
原創
912 人瀏覽過

你們中的大多數人可能已經知道電腦只能理解、儲存和處理位元(0 和 1)。

但是為什麼呢?
事實證明,與傳統的以 10 為基數的數字表示法相比,二值訊號可以輕鬆、更可靠地表示、儲存和傳輸,例如,打孔卡中是否存在孔、高值或低值等。電線上的電壓,或順時針或逆時針方向的磁疇等

此外,單位元通常對於表示電腦中任何有意義的東西沒有太大幫助,但是一旦我們組合一系列位,我們就可以表示任何有限集。例如,我們可以將位元編碼為負/非負和浮點數,也可以將文件中的字母和符號編碼。這就是為什麼(也可能不是)我們使用 8 位元或位元組作為最小的可尋址記憶體單元。以二進位表示時,其取值範圍為 00000000 至 11111111。以十進制整數表示時,其取值範圍為 0 至 255;以十六進位表示時,其取值範圍為 00 至 FF。我們通常將位元模式寫成十六進位(0 - 9,A - F),因為我們很容易與二進位表示法相互轉換。

在 C 程式語言中,以 0x 或 0X 開頭的數字常數被解釋為十六進位。字元“A”到“F”可以用大寫或小寫書寫。例如,我們可以將數位 FA1D37B 寫成 0xFA1D37B、0xfa1d37b,甚至可以混合大小寫(例如 0xFa1D37b)。

好吧,讓我們再說一件事,

資料大小

一些 CS 術語! ! !

  • 虛擬記憶體 - 記憶體中概念性的大位元組數組(還有更多內容,但將在本系列後面介紹)

  • 記憶體位址 - 用於識別記憶體位元組的唯一編號。

  • 虛擬記憶體空間 - 所有可能的記憶體位址的集合(稍後會介紹更多)。

  • 字大小 - 指標資料的標稱大小或虛擬記憶體位址的最大大小。

今天的電腦都是32 位元或64 位元字長,這意味著程式可以存取0 到2^32 - 1(如果是32 位元)和0 到2^64 - 1(如果是32 位元)的範圍。 64 位元)的虛擬位址。大多數在 64 位元機器上編譯的程式也可以在 32 位元機器上執行,但反之則不然。

電腦和編譯器支援多種資料格式,使用不同的資料編碼方式,例如整數和浮點,以及不同的長度。例如,許多機器都有用於操作單一位元組以及表示為 2、4 和 8 位元組數量的整數的指令。它們還支援以 4 位元組和 8 位元組數量表示的浮點數。某些資料類型的確切位元組數取決於程式的編譯方式。下面我展示了典型 32 位元和 64 位元程式的大小:

Representing and Manipulating Information in modern computer - Part 1

為了避免機器位數和編譯器設定之間的混淆,ISO C99 引入了一些資料類型,其中資料大小是固定的,無論編譯器或機器設定如何。正如您在上面的螢幕截圖中看到的,int32_t 和 int64_t 就在其中。使用固定大小的整數類型是程式設計師密切控制資料表示的最佳方式。

在結束之前 - 我們應該嘗試編寫可以移植到不同機器和編譯器的程式碼。可移植性的一方面是使程式對不同資料類型的確切大小不敏感。隨著向 64 位元機器的過渡,許多隱藏的字大小依賴性在將 32 位元程式遷移到新機器時出現了錯誤。例如,許多程式設計師過去認為聲明為 int 類型的物件可以用來儲存指標。這對於大多數 32 位元程式來說效果很好,但對於 64 位元程式來說會出現問題,因為如上所述,32 位元和 64 位元機器的字大小或指標大小會有所不同。

好的。這就是今天的全部內容。謝謝。

參考:電腦系統:程式設計師的視角。

以上是在現代計算機中表示和操作資訊 - 第 1 部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板