1. 程式人生 > >深入理解計算及系統 Chapter2 學習筆記(持續更新)

深入理解計算及系統 Chapter2 學習筆記(持續更新)

信息 得到 編碼方式 apt 轉換 數據 print 機器 void

Chapter2 信息的表示和處理

1.將一個十進制的數字x轉換為n進制,可以用n反復除x,得到商q和一個余數r,然後用這個r作為最低位數字,反復這個過程直到商為0,則可以得到n進制的表示,其原理為:

x = a0nm + a1nm-1 +···+ amn0

2.每臺計算機都有一個字長(word size),指明指針數據的標稱大小。因為虛擬地址是以這樣的一個字來編碼的,所以字長決定的最重要的系統參數就是虛擬地址空間的最大大小。也就是說,對於一個字長為w位的機器,虛擬地址的範圍為0~2w-1

3.小端法:最低有效字節在最前面的方式;大端法:最高有效字節在最前面的方式。如何判斷?

#include <stdio.h>

typedef unsigned 
char *byte_pointer; void show_bytes(byte_pointer start, size_t len) { size_t i; for(i = 0; i < len; i++) printf(" %.2x", start[i]); printf("\n"); }

4.左移和右移

  左移k位:丟棄最高的k位,並在右端補k個0

  右移分為邏輯右移和算數右移:

    邏輯右移k位:左端補k個0,拋棄最低的k位

    算數右移k位:左端補k個最高有效位的值,拋棄最低的k位

5.整數的表示

  無符號編碼可以定義為一個映射B2Uw

:{0, 1}w → { 0, 1,···, 2w-1 }

  補碼編碼可以定義為一個映射B2Tw:{0, 1}w → { -2w-1,···, 2w-1-1 }

  兩種編碼方式都具有唯一性(雙射)

深入理解計算及系統 Chapter2 學習筆記(持續更新)