Re: [請益] 計算機概論的問題

看板ask-why作者 (無神論者-無神得自由)時間19年前 (2007/01/16 07:53), 編輯推噓7(705)
留言12則, 4人參與, 最新討論串3/4 (看更多)
※ 引述《sthouse (S踢房子(糟糕島民))》之銘言: : ※ 引述《aaronleo (拉拉~)》之銘言: : : 有兩題程式語言的題目 : : 找來找去都沒有相關的解答 : : 第一題是 : i++代表的意思是? : : 解答為: i←i+1 : : 可是我還是不曉得這樣是什麼意思 : i++ 就是i+1的意思 : 也有++i的用法,不過有一些差別 : 在同一行執行時當i=0,i++ 和++i : 其中一個會顯示i=1,另一個會顯示i=0 簡而言之 就是程式設計師懶惰的結果 i++ 原本 要寫成 i=i+1 因為太常用了 所以簡寫 解答 寫i←i+1 是因為 i=i+1 是不符合數學邏輯的 因為程式中 = 跟數學中的= 意義不同 不過在計概中 答案如果寫 i=i+1 應該也算對 如果老師打錯 那就是 迂腐的老師了 i←i+1 就是 把i+1 這個數值 放入i 之中 i是變數 你可以想像成一個容器 當你看到 i=0 就是 把0放到 i中 而 i=i+1 就是 先把i這個容器內的數值 +1 之後 再放入i這個容器中 所以現在 i這個容器 放的值就是 1 再遇到這個 指令 一次 i 的值就會再加1 : : 第二題是: : : X = 0 : 設定x初始值為0 : : For (i=0; i<5; i++) : 迴圈跑6次,也就是i的初始值為0 : 當i小於五時執行底下的迴圈,後面就是讓i每執行一次加1 : : X = X + 3; : 執行這個迴圈時,每次x就加3,加完之後放回去x的暫存器裡面 : : 解答為18 沒有解釋運算過程@_@ : : 不曉得有沒有人能解答這兩題呢 : : 感激不盡 謝謝 x=0 for 迴圈開始 i=0 判斷 i是否小於5? 是 執行 i++ 即 i+1 此時 i=1 執行X = X + 3 -->X=3 回到迴圈 i=0 不會再執行(只執行一次 初始動作) 此時 i=1 判斷 i是否小於5? 是 執行 i++ 即 i+1 此時 i=2 執行X = X + 3 -->X=6 回到迴圈 i=0 不會再執行(只執行一次 初始動作) 此時 i=2 判斷 i是否小於5? 是 執行 i++ 即 i+1 此時 i=3 執行X = X + 3 -->X=9 回到迴圈 i=0 不會再執行(只執行一次 初始動作) 此時 i=3 判斷 i是否小於5? 是 執行 i++ 即 i+1 此時 i=4 執行X = X + 3 -->X=12 回到迴圈 i=0 不會再執行(只執行一次 初始動作) 此時 i=4 判斷 i是否小於5? 是 執行 i++ 即 i+1 此時 i=5 執行X = X + 3 -->X=15 回到迴圈 i=0 不會再執行(只執行一次 初始動作) 此時 i=5 判斷 i是否小於5? 不是 離開迴圈 不再 執行X = X + 3 所以 X=15 : 基本上這是很基本的程式,也不是這個版的主旨就是了...(也就是PO錯版) : 如果不確定,就輸入到程式裡面去跑就知道了 : 用單步執行去看暫存器狀態最容易了解 可能那個版的高手 解釋出來 他也不容易懂吧 所以我試解釋看看 -- 台灣的亂源在媒體與政客 媒體與政客會成亂源的原因在教育 關心教育 支持教育改革 才是擺脫此混亂的的根本之道 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.48.9

01/16 08:07, , 1F
對"程式設計師偷懶"有點不同的見解.在早期的CPU,累加的執行
01/16 08:07, 1F

01/16 08:08, , 2F
速度跟直接加一個數值是不同的,這樣寫可明確告訴CPU用累加
01/16 08:08, 2F

01/16 08:09, , 3F
而非用一般的加法,對程式最佳化有幫助.
01/16 08:09, 3F

01/16 08:16, , 4F
推本文作者與一樓
01/16 08:16, 4F

01/16 09:19, , 5F
寫 i=i+1 也可以 optimize 啊...compiler 沒那麼笨
01/16 09:19, 5F

01/16 10:15, , 6F
因為低階語言的ADD指令和INC指令的效能是有差的
01/16 10:15, 6F

01/16 10:16, , 7F
另外在Z Spec中,i++是否可以表示成i'=i+1?
01/16 10:16, 7F

01/16 11:43, , 8F
add 和 inc 不一定有差 要看 architecture
01/16 11:43, 8F

01/16 14:10, , 9F
同一個architecture會有相同的instruction set吧?
01/16 14:10, 9F

01/16 14:12, , 10F
也許樓上上指的是organization?
01/16 14:12, 10F

01/16 14:16, , 11F
不過我們應該只是討論為什麼有i++吧....
01/16 14:16, 11F

01/16 14:18, , 12F
我認為原因就是一樓說的,ADD指令和INC指令的差異
01/16 14:18, 12F
文章代碼(AID): #15h1Fpc2 (ask-why)
文章代碼(AID): #15h1Fpc2 (ask-why)