系統中資訊的表示和處理 --《深入理解計算機系統》第二章讀書筆記

zzzzMing發表於2016-09-07

1.資訊儲存

  • 系統將8位的塊作為最小的可定址儲存器單位,機器級程式系統看成一個大的陣列,然後通過地址來獲得儲存器中的這些塊的內容。
  • 資料在計算機中的儲存都是用二進位制,不過二進位制不易表示,一般我們用十六進位制來表示。如八位的十六進位制範圍為00~FF。
  • 計算機的字長代表其整數資料的大小,同時也是系統絮凝地址空間最大大小。
  • C語言中對布林代數的操作有提供幾種方式,比如&(與),|(或),~(取反),^(異或)。

2.整數表示

  • 無符號數的編碼,無符號數與有符號數的區別在於無符號數的最高位作為數值而不是符號表示。
  • 無符號數函式:,w表示為位數,(B2U的意思是Binary to Unsigned)
  • 有關有符號數的表示有三種,分別是原碼,補碼,反碼,計算機儲存和計算一般用的就是補碼。
  • 補碼編碼函式:,w為位數
  • 無符號數32位最大和有符號數32位最大最小值
  16進位制 10進位制
Umax(32位) 0xFFFFFFFF 4294967295
Tmax(32位) 0x7FFFFFFF 2147483647
Tmin(32位) 0x80000000

-2147483648

3.有符號數和無符號數轉換

  • 對大多數C語言而言,處理同樣字長的有符號數和無符號數之間相互轉換規則是:數值可能改變,但是位模式不變。
  • 有符號是向無符號數轉換:
  • 在C語言中,當在執行一個運算中有一個運算數是有符號的而另一個是無符號數的話,C語言會強制將有符號數轉換成無符號數參與運算,並假設兩個數都是非負的。

4.整數運算

  • 無符號加法:,當運算溢位時(超過w位所能表示的最大值)就會截斷,即將溢位位移除。
  • 補碼加法:,同無符號加法一樣,若運算結果溢位(有符號位分正溢位和負溢位),即將溢位值移除。
  • 補碼乘法:,C語言中處理補碼乘法運算結果是將2w位的乘積截斷為w位(高位截斷)。

5.浮點數的表示

  • 現代計算機中的浮點數表示基本採用IEEE浮點標準,以32位為例,s表示符號位,8位的exponent表示階碼,剩下的23位為尾數

 

相關文章