信息的表示和处理
文章目錄
- 1. 信息存儲
- 2. 整數(shù)的表示
learn from 《深入理解計(jì)算機(jī)系統(tǒng)》
1. 信息存儲
-
大多數(shù)計(jì)算機(jī),一字節(jié)(最小的尋址單元) byte = 8 bits 位
-
C語言中一個(gè)指針的值(無論它指向一個(gè)整數(shù)、一個(gè)結(jié)構(gòu)或是某個(gè)其他程序?qū)ο?#xff09;都是某個(gè)存儲塊的第一個(gè)字節(jié)的虛擬地址
-
進(jìn)制轉(zhuǎn)換:求余法,余數(shù)逆序
2n 轉(zhuǎn) 16 進(jìn)制:i = n%4, j = n/4, 表示成16進(jìn)制就是 數(shù)字 2i 后面跟 j 個(gè) 0
-
字節(jié)順序:小端法,大端法,不同的字節(jié)順序的機(jī)器間發(fā)送信息時(shí)需要注意這個(gè)問題
-
使用 ASCII碼 作為字符碼的任何系統(tǒng)上都將得到相同的結(jié)果,與 字節(jié)順序 和 字大小規(guī)則 無關(guān)。因而,文本數(shù)據(jù) 比 二進(jìn)制數(shù)據(jù) 具有更強(qiáng)的平臺獨(dú)立性
-
相同的程序,編譯成二進(jìn)制后,在不同的平臺上基本上是不相同的
-
注意掩碼在不同的機(jī)器上都有效,如 ~0xFF 可以把低8位掩蓋,而 0xFFFFFF00 只能在 32 位機(jī)器上工作
-
位移操作(算術(shù)右移:左側(cè)補(bǔ)充最高位)
2. 整數(shù)的表示
- 補(bǔ)碼:最高位取 負(fù)的權(quán)重
- 強(qiáng)制類型轉(zhuǎn)化:位模式不變,解讀權(quán)重的方式變了
- C語言:一個(gè)無符號,一個(gè)有符號,操作時(shí),會將有符號變?yōu)闊o符號,出現(xiàn)奇怪的現(xiàn)象
- 有符號數(shù)字 到 無符號數(shù)字 的隱式轉(zhuǎn)換,會帶來很多看不見的 BUG,避免使用 無符號數(shù)
- 乘法的運(yùn)算代價(jià)比加法、位移等代價(jià)更高,編譯器會嘗試將乘法轉(zhuǎn)換為位移和加減法
- -x 等價(jià)于 ~x+1
總結(jié)
- 上一篇: LeetCode 1822. 数组元素积
- 下一篇: 数据库和ORMS:使用SQLAlchem