Java程式設計那些事兒8 計算機內部的資料表達

2021-04-23 17:19:39 字數 1334 閱讀 2053

1.3 計算機內部的資料表達

計算機內部資料表達的總原則就是:把一切內容數值化、數位化。這個也是程式設計時處理資料的基本方式,對於程式設計理解的越深入,則將越認同該原則。

其實計算機也只能這樣,因為計算機內部只能儲存0和1兩個數字,所以必須把指令、資料、、文字等各種各樣的內容數碼化成0和1進行儲存、傳輸和顯示。

1.3.1 整數的表達

整數有正負之分,但是計算機內部只能儲存0和1,則計算機內部將符號數位化,用二進位製碼的最高位代表符號位,規定該位為0代表正,1代表負。這就是符號數位化的規定。

前面介紹過整數在計算機內部都是以二進位制的形式儲存的。但是為了計算方便,以及簡化cpu的結構,所以在儲存和運算時都採用補碼的形式。

前面介紹的那些直接計算出來的二進位制形式,都稱作整數的原碼。規定正數的原碼、反碼和補碼都是自身。

而對於負數,仔細研究一下其組成格式。以8位機為例,也就是乙個數字佔計算機中的8位,也就是乙個位元組,用最高位儲存符號位,其它的位儲存數值。例如-8的原碼是10001000,最高位的1代表負數,後續的7位代表數值。

負數的反碼是指符號位不變,其他的位取反,也就是0變1,1變0,則-8的反碼是11110111。

負數的補碼是指在反碼的數值位上加1,運算後得到的結果,只計算數值位,不改變符號位。則-8的補碼是11111000,該次運算中,低位向高位進行了進製。

規律:補碼的補碼等於負數的原碼。

也就是對負數的補碼再求補,則得到的負數的原碼。

熟悉整數的表達,對於後續理解資料的區間以及進行強制轉換以後得到的數值很有幫助,也是進行位運算的基礎。

備註:小數,程式語言中稱浮點數,的儲存形式和整數不同。

1.3.2 字元的表達

字元指計算機內部單個的符號,如標點符號、英文本母和漢字等等。因為這些字元種類各異,計算機無法直接表達,那麼就採用了計算機程式設計中也常用的方式,對每個字元進行編號,例如規定a字元編號為97,b字元編號為98等等。

由於需要編號的字元很多,就專門規定了一系列字元和編號的對應規則,那麼這些對應表就被稱作字符集,常見的字符集有ascii、gb2312、big5等。

在計算機內部儲存、運算和傳輸時,都只需要使用該編號即可。

字符集比較完美的解決了字元的儲存和傳輸的問題。

所以字元在程式內部可以參與運算,其實參與運算的就是這個字元的編號,字符集規律是很多字元變換邏輯實現的基礎。

備註:字元的顯示則通過專門的字元顯示碼實現。

1.3.3 總結

其實計算機內部所有的東西都是以數字的形式儲存的,這裡只是希望通過這兩種簡單的結構,使大家了解將資料數位化的思想,這是程式設計時常用的思想之一。

計算機記憶體

1.1 計算機硬體記憶體架構。計算機cpu central processing unit 和記憶體的互動是最頻繁的,記憶體是我們的快取記憶體區。使用者磁碟和cpu的互動,而cpu運轉速度越來越快,磁碟遠遠跟不上cpu的讀寫速度,才設計了記憶體,使用者快取使用者io等待導致cpu的等待成本。但是隨著...

計算機內的進化

計算機內的進化 遺傳演算法的工作過程實質是模擬生物進行過程。首先,應確定一種編碼方法,使得你的問題的任何乙個潛在可行解都能表示成乙個 數字 染色體。然後,建立乙個由隨機的染色體組成的初始群體,並在一段時期中,以培育適應性最強的個體的方法,讓它們進化。在此期間,染色體的某些位置上,要加 入少量的變異。...

計算機記憶體定址

摘自 1 基本概念 cpu段式管理 段式管理的基本原理是指把乙個程式分成若干個段 segment 進行儲存,每個段都是乙個邏輯實體 logical entity 乙個使用者作業或程序所包含的段對應乙個二維線形虛擬空間,程式通過分段 segmentation 劃分為多個模組,故可以對程式的各個模組分別...