作者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