5233杨光--第三周实验报告
信息的表示和處理
一、數(shù)字表示
??? 1、 無符號數(shù):編碼基于傳統(tǒng)的二進(jìn)制表示法表示大于或等于零的數(shù)字。
? ? 2、 補(bǔ)碼:編碼是表示有符號整數(shù)的最常見方法,可以是正或者是負(fù)的數(shù)字。
? ? 3、 浮點(diǎn)數(shù):編碼是表示實(shí)數(shù)的科學(xué)計(jì)數(shù)法的以二位基數(shù)的版本。?
? ? ?***當(dāng)結(jié)果太大不能表示時(shí)會溢出,大量安全漏洞都是由于算數(shù)運(yùn)算引發(fā)的***
二、信息存儲
? ? 1、最小的可尋址存儲器單位:字節(jié)
? ? 2、虛擬存儲器:每個(gè)字節(jié)都由唯一的數(shù)字標(biāo)識,稱為地址
? ? 3、虛擬地址空間:所有可能地址的集合
? ? 4、每個(gè)程序?qū)ο罂梢暈樽止?jié)塊,程序本身是一個(gè)字節(jié)序列
***十六進(jìn)制表示法
0x...
當(dāng)x是2的非負(fù)整數(shù)二次冪時(shí),將n寫作i+4j的形式,j表示0的個(gè)數(shù)
i=0 :1 ? ? ?i=1 :2 ? ?i=2 :4 ? ? i=3 :8
進(jìn)制轉(zhuǎn)換代碼
***字
字長:指明整數(shù)和指針數(shù)據(jù)的標(biāo)稱大小
字長為w,虛擬地址范圍:0~2的w次方-1,最多訪問2的w次方個(gè)字節(jié)
大多數(shù)計(jì)算機(jī)字長為32位,實(shí)驗(yàn)樓為64位
gcc -m32 可以在64位機(jī)上生成32位的代碼
***數(shù)據(jù)大小
見書p26圖2-3
兩種不同的浮點(diǎn)數(shù)格式:單精度 雙精度
格式:4字節(jié) 8字節(jié)
***尋址和字節(jié)順序
小端法:最低有效字節(jié)在最前面,高對高,低對低
大端法:最高有效字節(jié)在最前面,相反
反匯編器:確定可執(zhí)行程序文件所表示的指令序列的工具
C 強(qiáng)制類型轉(zhuǎn)換
sizeof 確定對象使用字節(jié)數(shù)
不同的操作系統(tǒng)有不同的分配規(guī)則,結(jié)果相同,指針值卻完全不同
字節(jié)模式 整型 0x00003039 ?浮點(diǎn)數(shù) 0x4640E400
***表示字符串
字符串:以null字符結(jié)尾的字符數(shù)組
文本數(shù)據(jù)比二進(jìn)制數(shù)據(jù)具有更強(qiáng)的平臺獨(dú)立性
庫函數(shù)strlen不計(jì)算終止的空字符
***表示代碼
二進(jìn)制代碼是不兼容的,很少能在不同操作系統(tǒng)間移植
2.1.7 布爾代數(shù)簡介
與 或 非 異或
位向量:表示有限集合
***C語言中的位級運(yùn)算
確定一個(gè)位級運(yùn)算最好的方法:將十六進(jìn)制的參數(shù)擴(kuò)展成二進(jìn)制表示并執(zhí)行二進(jìn)制運(yùn)算,然后再轉(zhuǎn)換回十六進(jìn)制
常見用法:掩碼運(yùn)算
掩碼:位模式,從一個(gè)字中選出的位的集合
***C語言中的邏輯運(yùn)算
0 false 非0 true
如果對第一個(gè)參數(shù)求值就能確定表達(dá)式的結(jié)果,那么邏輯運(yùn)算符就不會對第二個(gè)參數(shù)求值
***C語言中的移位運(yùn)算
<< ? ?>>
邏輯右移:左端補(bǔ)0
算數(shù)右移:左邊補(bǔ)最高有效位
對于無符號數(shù)據(jù),右移必須是邏輯的
?
三、整數(shù)表示
兩種方式
***整型數(shù)據(jù)類型
可表示負(fù)數(shù),零,和正數(shù)
取值范圍中,負(fù)數(shù)的范圍比整數(shù)大1
***無符號數(shù)的編碼
重要屬性:每個(gè)介于0~2的w次方-1之間的數(shù)都有唯一一個(gè)w位的值編碼(雙射函數(shù))
***補(bǔ)碼編碼
最常見的有符號數(shù)的計(jì)算機(jī)表示方式就是補(bǔ)碼形式
將字的最高有效位解釋為負(fù)權(quán)
最高有效位:符號位
權(quán)重-2的位數(shù)次方,是無符號表示中權(quán)重的負(fù)數(shù)
最小值[10...0] 最大值[01...1]
UMax TMin TMax
P42頁表
|TMin|=|TMax|+1
UMax=2TMax+1
***有符號數(shù)和無符號數(shù)之間的轉(zhuǎn)換
數(shù)值可能會改變,但是位模式不變
這一段沒太看懂
***C語言中的有符號數(shù)與無符號數(shù)
大多數(shù)數(shù)字都默認(rèn)為有符號的
要?jiǎng)?chuàng)建一個(gè)無符號常量,要加上后綴U或u
轉(zhuǎn)換的原則是底層的位保持不變
如果一個(gè)運(yùn)算一個(gè)有符號一個(gè)沒符號,會將有符號強(qiáng)制轉(zhuǎn)換為無符號
***擴(kuò)展一個(gè)數(shù)字的位表示
在不同字長的整數(shù)之間轉(zhuǎn)換,同時(shí)又保持?jǐn)?shù)值不變
無符號數(shù):開頭添0(零擴(kuò)展)
補(bǔ)碼:添加最高有效位值得副本(符號擴(kuò)展)
***截?cái)鄶?shù)字
減少一個(gè)數(shù)字的位數(shù)
截?cái)嘁粋€(gè)數(shù)字會改變值(溢出)
?
四、整數(shù)運(yùn)算
***無符號加法
可以被視作一種模運(yùn)算形式
溢出:完整的整數(shù)結(jié)果不能放到數(shù)據(jù)類型的字長限制中去
2.3.2 補(bǔ)碼加法
2.3.3 補(bǔ)碼的非
2.3.4 無符號乘法
2.3.5 補(bǔ)碼乘法
2.3.6 乘以常數(shù)
2.3.7 除以2的冪?
五、 浮點(diǎn)數(shù)
對形如V=x*2的y次方的有理數(shù)進(jìn)行編碼
***二進(jìn)制小數(shù)
重點(diǎn)掌握表示方法,p69表
***IEEE浮點(diǎn)表示
標(biāo)準(zhǔn):V=(-1)的s次方*M*2的E次方
符號:s決定正(0)負(fù)(1)
尾數(shù):M是二進(jìn)制小數(shù)
階碼:E的作用是對浮點(diǎn)數(shù)加權(quán)
情況1:規(guī)格化的值:當(dāng)exp的位模式既不全是0,也不全是1
情況2:非規(guī)格化的值:階碼域全0
情況3:特殊值:階碼全1
***舍入
找到最接近的匹配值
四種舍入方式
默認(rèn)方法找到做接近的匹配,其他三種用于計(jì)算上界和下界
向偶數(shù)舍入(默認(rèn)):向上舍入,向下舍入
***浮點(diǎn)運(yùn)算
不具有結(jié)合性
滿足了單調(diào)性
只有有限的范圍和精度
***C語言中的浮點(diǎn)數(shù)
float double
?
感想:這部分講的基本和以前學(xué)過的知識能相結(jié)合,所以不是很難理解,學(xué)的較為輕松,就是補(bǔ)碼轉(zhuǎn)有符號數(shù)還是不是非常熟練,需要多練習(xí)。
轉(zhuǎn)載于:https://www.cnblogs.com/yg137565645/p/4861267.html
總結(jié)
以上是生活随笔為你收集整理的5233杨光--第三周实验报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word怎么设置题注
- 下一篇: Shell数组相关操作