作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] 問個有點蠢的問題~
時間Fri Oct 19 22:24:16 2007
※ 引述《ntueestudent (bluesky)》之銘言:
: 這個問題可能太初學了一點
: 不過我還是不太清楚
: 一個variable的"value"究竟是什麼意思??
: 又第一題問的"maximal value"是什麼呢??
: 可以解釋一下嗎??
: 謝謝~!
當你在程式中寫像 ---
int i;
char ch;
"i" 以及 "ch" 是 variables.
他們用來儲存不同(型態)的值 (values), 用來給你的程式來做運算, 比方說:
i = a + b; // a and b are other int variables
if (ch == 'q') exit(); // exit() quits the program.
但是想想看對電腦來說, 他 care 的其實只是值 (value) 而已,
像 "a + b" 電腦做的事就是 "將 a 的值與 b 的值加起來".
要做到這樣, 必須有兩件事情配合:
1. 電腦要將 a 與 b 存起來, 存在 memory 裡, 才能給算數單元 (硬體) 去作加法.
而去存一個 integer, 需要用 四個 Bytes (= 8 * 4 = 32 bits) 的記憶體.
2. Compiler 要知道 a, b 這兩個 symbols 是對應到哪兩個記憶體位置,
所以會用一個 "symbol table" 將 a, b 等 varialbe symbols 與記憶體位置
做一個 mapping.
所以 compile 之後才能將 a+b 編譯成:
add (a 的記憶體位置), (b 的記憶體位置)
的 assembly (machine) code.
而 另一個問題, variable 的 maximum value,
自然就是這樣的記憶體可以表示到多大的 value.
比方說, int ==> 32 bit ==> max value = 2^32 - 1 (減一是因為從 0 開始)
======
唉, 今天才在車上跟學生說 NTUEE 應該要先學 計算機概論, 再學 計算機程式...
大家覺得呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.134.53
1F:推 Steggie:我以前修的計概有好幾個 homework 要寫程式 ^^" 10/20 01:13
2F:→ Steggie:所以計程是 prerequisite... 10/20 01:13
3F:推 ric2k1:oh... I see... 不過覺得同學們有一些基礎的計概知識 10/20 01:16
4F:→ ric2k1:學起計程可能會比較有感覺... 10/20 01:17
5F:推 Steggie:其實也是 ^^" 那時候計概寫的 hw 主要也只是 implement 一 10/20 01:41
6F:→ Steggie:些學到的概念 如果先學計概 等到計程再來做這些 也不遲 10/20 01:42
7F:推 Knossos:那就折衷吧!像資工一樣一次修兩門..XD 10/20 11:58
8F:推 flarehunter:我覺得應該先跳過class 等到教完自訂函式之後再回來教 10/20 12:28
9F:→ flarehunter:一開始就教class好像太難了一點 10/20 12:29
10F:推 love20123:我也覺得...一開始就教class真的好難 10/20 14:49
11F:→ love20123:對沒學過的人而言真的不太容易了解(ex:我>"<)... 10/20 14:49