一.計算機系統之信息的表示和處理

  1. ==信息存儲==
  • 本節介紹了高級語言(主要是C語言)的數據大小在機器存儲中是怎樣表示的,以及高級語言提供的計算符號.
  • 1.1:字節(byte):8位的塊,做爲最小的存儲器單位。例如:機器級程序將存儲器視爲一個很是大的字節數組(虛擬存儲器),每個字節都有惟一的數字來標識(這一部分直接作在硬件及驅動上,而後系統直接使用).程序員

    • eg指針:不管其指向的是一個整數、一個結構或是謳歌其餘程序對象,都是某個存儲塊的第一個字節的虛擬地址。
  • 1.2::每臺計算機都有一個字長(word size),指明整數和指針數據的標稱大小。虛擬地址是以一個字來編碼的,因此字長(字的長度)能決定系統參數(虛擬地址)的最大大小。eg:字是CPU進行一次並行處理的二進制位數,爲8的倍數。以32位機爲例,它的字長是2^32位長度,一次能夠處理4個字節的數據(也即一個整數和指針數據爲4個字節)數組

  • 1.3 數據大小:上面說了在邏輯層機器層的數據最小單位。下面展現下C語言中的數據層單位編碼

數據類型 字節(32位) 幾個字(32位) 計算機操做的次數(32位) 字節(64位) 幾個字(64位) 計算機操做的次數(64位)
char 1 1/4 4個/次 1 1/8 8個/次
short int 2 1/2 2個/次 2 1/4 4個/次
int 4 1 1個/次 4 1/2 2個/次
long int 4 1 1個/次 8 1 1個/次
long long int 8 2 0.5個/次 8 1 1個/次
char * 4 1 1個/次 8 1 1個/次
float 4 1 1個/次 4 1/2 2個/次
double 8 1/2 0.5個/次 8 1 1個/次
  • 1.4:尋址和字節順序:一個數據的內存存放位置,是先存放其最高位仍是最低位
大端法:從最低有效字節到最高有效字節的順序存儲對象.--intel
小端法:從最高有效字節到最低有效字節的順序存儲對象.--IBM/Sun Microsystems
  • 例如: int x 的十六進制值爲:0x01234567。大端方:01:0x100;
大端方 01 23 45 67
虛擬即地址 0x100 0x101 0x102 0x103
小端方 67 45 23 01
虛擬即地址 0x103 0x102 0x101 0x100
  • 1.5 字符串:C語言中的字符串被編碼爲以null(其值爲0) 字符結尾的字符數組。其中每一個字符都是由謳歌標準編碼表示,最多見的是ASCII字符碼。設計

  • 1.6 布爾代數簡介:二進制值是計算機編碼、存儲和操做信息的核心,因此圍繞0和1的研究已經演化成了豐富的數學知識體系。這起源於1850年先後的喬治.布爾的工做,所以也成爲布爾代數。被注意到將邏輯值TRUE(真)和FALSE(假)編碼爲二進制值-和1,能設計出一種代數,以研究邏輯推理的基本原則.指針

  • 1.7 C語言中的位級運算: C語言的一個頗有用的特性是它支持按位布爾運算.或(OR):| 、與(AND):& 、取反(NOT):~ 、異或(exclusive-or):^ .位級運算的一個常見用法是實現掩碼運算.code

  • 1.8 C語言中的邏輯運算:C語言提供了一組運算符||、&&和!對象

  • 1.9 C語言中的移位運算:C語言提供了一組移位預算,一邊向左(<<)或者向右(>>)移動位模式.內存

  1. ==整數表示==
  • 本節詳細介紹一下整型數據類型在機器中的各類表示、運算的表示方式。若是不是作驅動級別能夠不予理會
  • 2.1 整形數據類型
  • 2.2 無符號數的編碼
  • 2.3 補碼編碼
  • 2.4 無符號數和有符號數之間的轉換
  • 2.5 C語言中的有符號數和無符號數
  • 2.6 擴展一個數字的位表示
  • 2.6 截斷數字
  • 2.6 關於有符號數與無符號數的建議
  1. ==整數運算==
  • 計算機運算的有限性會形成奇怪的現象,例如兩個正數相加會得出一個負數,理解計算機運算的細微之處可以幫助程序員編寫更急可靠的代碼
  • 3.1 無符號加法
  • 3.2 補碼加法
  • 3.3 補碼的非
  • 3.4 無符號乘法
  • 3.5 補碼乘法
  • 3.6 除以2的冪
  • 3.7 關於整數運算的最後思考
  1. 浮點數
  • 本節討論在IEEEE浮點格式中是如何表示數組。討論加法、乘法和關係運算符的數學屬性。
  • 4.1 二進制小數
  • 4.2 IEEE浮點表示
  • 4.3 舍入
  • 4.4 浮點計算
  • 4.5 C語言中的浮點數
相關文章
相關標籤/搜索