2017-2018-1 20155333 《信息安全系統設計基礎》第三週學習總結
教材學習內容總結
- 字長決定虛擬地址空間的最大大小(對於一個字長爲w位的機器,虛擬地址的範圍爲0~2^w-1)。
- 小端法:高位放高地址;大端法:高位放低地址。
- 即便是相同的一段代碼,在不一樣的機器類型使用不一樣、不兼容的指令,所以二進制代碼是不兼容的。
- 位向量經常使用於集合的表述(狀態壓縮經常使用)。
- 對於無符號數,右移必須是邏輯的;對於有符號數,邏輯、算數右移均可以。
- 不管是無符號數仍是有符號數,它們之間的加減乘除基本運算都是創建在位級的表示基礎上的,最終結果不管溢不溢出,在位模式上都會保持原有的位個數。
- 兩個正整數(不管是無符號數仍是有符號數)相除,結果都是正整數(將小數部分捨去)。這與位級的表示和移位有關。當有負整數(有符號數)參與時,移位會致使向下舍入而不是向零舍入。此時,能夠在右移以前將小於0的被除數偏置(加上除數再減1),就能夠獲得正確的結果。
- 表示浮點數及其運算的標準:IEEE標準754。浮點數有規格化的、非規格化的、無窮大和NaN四種狀況。
- 浮點數運算不可結合和分配,不然中間值可能會±∞或NaN。
教材學習中的問題和解決過程
- 問題1:整數除法中正整數(不管是無符號數仍是有符號數)的右移能產生正確的結果,而負整數(有符號數)的右移卻不能產生正確的結果的緣由
- 問題1解決方案:
-
- 正整數右移後可能把原來在位級上的非零位移到小數點後,即把某些非零位經過右移(即除以2k)給移走了,而在計算機的整數運算中只可能顯示出小數點左邊的位模式。但在天然界中,非零數(即上面說的非零位)不管怎麼除,結果都不會爲零。好比1除以二、1除以2二、1除以2四、1除以216……,結果都不爲零,只是精度能保留到多少而已。也就是說,正整數被除後,它的結果在小數點後面還可能會有非零的數的,但由於在計算機中整數運算的性質,這些非零數被抹去了,只留下小數點左邊的整數,結果只能比除法運算的結果小,但符合主機意識中對計算機整數除法的理解,即向零舍入。
-
- 負整數的右移和上述相同。右移把結果中小數點右邊的非零位給抹去了。這些非零位實際上是正的,但由於抹去了,結果就爲原來的負數結果減去這些非零位所表明的值,那麼,最終結果也就造成了向下舍入而不是向零舍入的局面。
- 問題2:強轉與舍入
- 問題2解決方案:
-
- int轉爲float,不會溢出,可是可能被舍入,畢竟都只有2^32個狀態,能表達的總信息量是必定的。如2^24+1和2^24強轉爲float後,值爲2^24.000000。舍入的時候會有一種特殊狀況,稱爲向偶數舍入,在非有效位值正好是兩個可能值的中間值時,傾向於經過取捨,使得有效位的最後一位爲0.
-
- double轉float, 可能溢出爲-∞或+∞.
-
- float和double轉int,向零舍入。若是出現溢出,則值會變成0b1000 0000,也就是-Min。
- 問題3:
printf("%.2x");
解析
- 問題3解決方案:點號,用於分隔字段寬度和表示精度的數。對於字符串,它指定打印的字符的最大個數;對於e、E或f轉換,它指 定打印的小數點後的數字位數;對於g或G轉換,它指定打印的有效數字位數;對於整型數,它指定打印的數字位數(必要時可填充位0以達到要求的寬度)。
- ...
代碼調試中的問題和解決過程
![](http://static.javashuo.com/static/loading.gif)
- 問題1解決方案:沒想到居然還會出現main後面不加括號這種問題,真的是須要警醒了
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
上週考試錯題總結
- 錯題1及緣由,理解狀況
- 錯題2及緣由,理解狀況
- ...
結對及互評
評分標準
- 正確使用Markdown語法(加1分):
- 不使用Markdown不加分
- 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
- 排版混亂的不加分
- 模板中的要素齊全(加1分)
- 缺乏「教材學習中的問題和解決過程」的不加分
- 缺乏「代碼調試中的問題和解決過程」的不加分
- 代碼託管不能打開的不加分
- 缺乏「結對及互評」的不能打開的不加分
- 缺乏「上週考試錯題總結」的不能加分
- 缺乏「進度條」的不能加分
- 缺乏「參考資料」的不能加分
教材學習中的問題和解決過程, 一個問題加1分html
代碼調試中的問題和解決過程, 一個問題加1分java
- 本週有效代碼超過300分行的(加2分)
- 其餘加分:
- 週五前發博客的加1分
- 感想,體會不假大空的加1分
- 排版精美的加一分
- 進度條中記錄學習時間與改進狀況的加1分
- 有動手寫新代碼的加1分
- 課後選擇題有驗證的加1分
- 代碼Commit Message規範的加1分
- 錯題學習深刻的加1分
- 點評認真,能指出博客和代碼中的問題的加1分
- 結對學習狀況真實可信的加1分
- 扣分:
- 有抄襲的扣至0分
- 代碼做弊的扣至0分
- 遲交做業的扣至0分
點評模板:
點評過的同窗博客和代碼
其餘(感悟、思考等,可選)
xxx
xxx學習
學習進度條
目標 |
5000行 |
30篇 |
400小時 |
|
第一週 |
10/10 |
2/2 |
10/10 |
|
第二週 |
80/90 |
2/4 |
15/25 |
|
第三週 |
100/190 |
3/7 |
15/40 |
|
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。.net
參考:軟件工程軟件的估計爲何這麼難,軟件工程 估計方法設計
計劃學習時間:25小時調試
實際學習時間:15小時code
改進狀況:htm
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)
參考資料