日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

读书笔记 -《深入理解计算机系统》2.1

發(fā)布時間:2024/10/8 windows 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读书笔记 -《深入理解计算机系统》2.1 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、進制

????? 計算機作為一種電子計算工具,是由大量的電子器件組成的,在這些電子器件中,電路的通和斷、電位的高和低,用兩個數(shù)字符號“1”和“0”分別表示容易實現(xiàn)。同時二進制的運算法則也很簡單,因此,在計算機內(nèi)部通常用二進制代碼來作為內(nèi)部存儲、傳輸和處理數(shù)據(jù)。

????? 但是用二進制數(shù)表示一個數(shù)值時,位數(shù)比較長,不便書寫和記憶,而用于十進制雖然看起來很方便但是與位模式之間的轉(zhuǎn)換卻十分的麻煩。因此,使用十六進制來書寫位模式。

????? 下圖為二進制、十進制、十六進制的轉(zhuǎn)換表:

??????

2、單位

字節(jié)(byte):用于計量存儲容量和傳輸容量的最小的可存儲器單位,1個字節(jié)等于8位二進制。

?

單位的換算:

????? 1字節(jié)(Byte)= 8位(bit)

????? 1024字節(jié) = 1KB(2^10字節(jié))

????? 1024KB = 1MB(2^20字節(jié))

????? 1024MB = 1GB(2^30字節(jié))

????? 1GB = 1TB(2^40字節(jié))

3、字長

????? 在同一時間中處理二進制數(shù)的位數(shù)叫字長。通常稱處理字長為8位數(shù)據(jù)的CPU叫8位CPU,32位CPU就是在同一時間內(nèi)處理字長為32位的二進制數(shù)據(jù)。二進制的每一個0或1是組成二進制的最小單位,稱為一個比特(bit).

  字長:一般說來,計算機在同一時間內(nèi)處理的一組二進制數(shù)稱為一個計算機的“字”,而這組二進制數(shù)的位數(shù)就是“字長”。在其他指標相同時,字長越大計算機的處理數(shù)據(jù)的速度就越快。早期的微機字長一般是8位和16位,386以及更高的處理器大多是32位。目前市面上的計算機的處理器大部分已達到64位。更多信息查看

? 4、字節(jié)順序

由來:

????? 我們在寫字符流時,因為字符型只占一個字節(jié)數(shù),計算機只須按一個字符一個字符寫入文件即可。但是如果是處理整型時,由于整型占4個字節(jié),所以一個整型內(nèi)部的字節(jié)存儲排列的順序直接關(guān)系到被計算機識別出來的整型值。某種意義上也可直接理解計算機的識別順序就是所謂的字節(jié)順序。

????? 字節(jié)序主要分為:大端法(通常為網(wǎng)絡(luò)字節(jié)序)、小端法(通常為主機字節(jié)順序)

?

????? 1、小端法(Little-Endian)就是低位字節(jié)排放在內(nèi)存的低地址端即該值的起始地址,高位字節(jié)排放在內(nèi)存的高地址端。
????? 2、大端法(Big-Endian)就是高位字節(jié)排放在內(nèi)存的低地址端即該值的起始地址,低位字節(jié)排放在內(nèi)存的高地址端。

舉個簡單的例子,對于整形0x12345678。它在大端法和小端法的系統(tǒng)內(nèi)中,分別如圖1所示的方式存放。

?5、原碼,反碼,補碼

????? 數(shù)值有正負之分,計算機就用一個數(shù)的最高位存放符號(0為正,1為負).這就是機器數(shù)的原碼了.假設(shè)機器能處理的位數(shù)為8.即字長為1byte,原碼能表示數(shù)值的范圍為(-127~-0 +0~127)共256個.(注:-0將由下面解釋)?

????? 有了數(shù)值的表示方法就可以對數(shù)進行算術(shù)運算.但是很快就發(fā)現(xiàn)用帶符號位的原碼進行乘除運算時結(jié)果正確,而在加減運算的時候就出現(xiàn)了問題,如下: 假設(shè)字長為8bits

????? (1) 10 - (1)10 = (1)10 + (-1)10 = (0)10

????? (0 0000001) + (1 0000001) = (1 0000010) = ( -2 ) 顯然不正確。

????? 因為在兩個整數(shù)的加法運算中是沒有問題的,于是就發(fā)現(xiàn)問題出現(xiàn)在帶符號位的負數(shù)身上。對除符號位外的其余各位逐位取反就產(chǎn)生了反碼。反碼的取值空間和原碼相同且一一對應(yīng)。下面是反碼的減法運算:

????? (1)10 - (1)10 = (1)10 + (-1)10 = (0)10

????? (0 0000001) + (1 1111110) = (1 1111111) = ( -0 ) 有問題。

????? (1)10 - (2)10 = (1)10 + (-2)10 = (-1)10

????? (0 0000001) + (1 1111101) = (11111110) = (-1) 正確。

????? 問題出現(xiàn)在(+0)和(-0)上,在人們的計算概念中零是沒有正負之分的。(印度人首先將零作為標記并放入運算之中,包含有零號的印度數(shù)學和十進制計數(shù)對人類文明的貢獻極大)。

????? 于是就引入了補碼概念。負數(shù)的補碼就是對反碼加一,而正數(shù)的補碼不變,正數(shù)的原碼反碼補碼是一樣的。在補碼中用(-128)代替了(-0),這個是人為規(guī)定的,所以補碼的表示范圍為:

????? (-128~0~127)共256個。

????? 注意:(-128)沒有相對應(yīng)的原碼和反碼, (-128) = (1 0000000)? 補碼的加減運算如下:

????? (1)10 - (1)10 = (1)10 + (-1)10 = (0)10

????? (0 0000001) + (1 1111111) = (0 0000000) = ( 0 ) 正確。

????? (1)10 - (2)10 = (1)10 + (-2)10 = (-1)10

????? (00000001) + (11111110) = (11111111) = (-1) 正確。

????? 所以補碼的設(shè)計目的是:

???? (1)使符號位能與有效值部分一起參加運算,從而簡化運算規(guī)則。補碼機器數(shù)中的符號位,并不是強加上去的,是數(shù)據(jù)本身的自然組成部分,可以正常地參與運算。

???? (2) 使減法運算轉(zhuǎn)換為加法運算,進一步簡化計算機中運算器的線路設(shè)計。

所有這些轉(zhuǎn)換都是在計算機的最底層進行的,而在我們使用的匯編、c等其他高級語言中使用的都是原碼。

轉(zhuǎn)載于:https://www.cnblogs.com/BoyceLin/archive/2010/06/08/1754060.html

總結(jié)

以上是生活随笔為你收集整理的读书笔记 -《深入理解计算机系统》2.1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。