作者xiaoa (沒有靈魂的人)
看板ask-why
標題Re: [請益] 為什麼電腦資料要用16進位
時間Wed Jun 3 01:12:04 2009
※ 引述《kenin (風起雲湧)》之銘言:
: 標題: [請益] 為什麼電腦資料要用16進位
: 時間: Tue Jun 2 22:30:34 2009
:
: 我知道電腦本身所讀取的都0跟1
: 而在儲存資料時為何要用16進位而不用8進位或32進位
: 如果電腦儲存時改用8進位或32進位會有什麼差別
:
:
: --
:
※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 122.123.169.247
: → leoblack:16進位是否是指"有16個欄位可以紀錄1/0的資訊"?! 06/02 22:34
: → kenin:8進位=3個bit 16進位=4bit 32進位=5bit 06/02 22:39
: → yhliu:有的電腦系統是採用8進位的, 當然基礎仍是2進位. 06/02 22:45
: → sitos:糟... 我連問題都看不懂. 06/02 23:40
: 推 ot32em:應該跟組合語言的 BYTE(1byte), WORD(2byte), DWORD(4byte) 06/02 23:46
: → ot32em:怎麼樣也不會 DWORD會來個2.25byte 有點不太乾跪~ 06/02 23:47
: 推 HuangJC:一切都是人類的解釋,不過我們溝通時想要有共通的專有名詞 06/02 23:54
: → HuangJC:一般來說,5V為1,0V為0 ; 但事實上 5V為0,0V為1 亦無不可 06/02 23:55
: → HuangJC:因為開關明顯有兩態,所以我們發展了二進位數學,並且貫串 06/02 23:56
: → HuangJC:CPU 內部的運算系統;但事實上3進位也可以用,多加個 -5V XD 06/02 23:57
: → HuangJC:只是..用了三進位,你就獨門獨戶了..要怎麼和別人談? 06/02 23:57
: → xiaoa:要看是什麼"資料"吧.... 現在的系統不是多採用32bit嗎? 06/03 00:12
: 推 HuangJC:2'進位'和 32'位元' 是兩回事;我們討論'逢2進位'這事就好 06/03 00:16
: → xiaoa:JC說的不對吧...半導體做不到3進位, 只能從2bit降下來, 這樣 06/03 00:17
: → xiaoa:難怪 板主說問題都看不懂..... 06/03 00:17
: → HuangJC:32位元是指有32個2進位的數字;最後..3進位有用,看怎麼解讀 06/03 00:18
: → HuangJC:我們先講完課本上有的東西,因為那是想統一大家字眼的基礎 06/03 00:19
: → xiaoa:原PO說的16進位就是4bit. 他自己推文不是說了....... 06/03 00:20
: 推 HuangJC:他的說法是對的,只是同時混用'位元'和'進位',有人搞混了 06/03 00:26
: → HuangJC:所以把字眼再單純化,說電腦只懂二進位,會比較好談 06/03 00:27
: → xiaoa:原PO不是問,為何單位元不是3進. 是問,為何用4位元,不用3、5 06/03 00:30
: → xiaoa:3樓不是說了嗎...... 06/03 00:31
我不能很精準的回答原PO的問題
而我只是略懂, 所以有錯勿怪
--回應JC大--離題離很大--
目前, 電腦所用的運算單元是由半導體電路組成的
對電路來說, 電流是類比訊號, 要多少進位都不是問題
但基本上, 我們為了要運算, 必須在電路上增進"開關"
這些開關, 便是半導體
每一個半導體都能很直接的代表 開 和 關, 即 一個二進位的一位數字
試問半導體是不是可以表示 三進位?
假設今天有 0V, 5V 10V, 半導體 在5V時導通
一個半導體無法分辨 5V 和 10V的差別. 也許電流大一點, 但它就是無法分辨
這時, 如果我們使用 二個半導體 + 適當的電路設計, 我們就能分辨 0,5,10的差別
所以, 接論是:
半導體能夠表示三進位
但是這裡有個漏洞
我們使用了二個半導體
二個半導體實際上能代表四進位
我們卻只用了三個數字, 那其不是浪費??
這就是為甚麼電腦多是以二進位做為基礎,4進位,8進位,16進位的運算
如果電子儀器的設計, 其運算單元並非半導體, 那它不是2進位並不奇怪
希望這樣有回答到 JC大
--原PO的問題--
在早時候, 半導體晶元還很大
運算時要盡量節省, 所以要用較少的 bit來代表一個"字元"
(PS: 在硬體上會預留空間給字元, 也就是資料為01, 4bit硬體只能以 0001 表示)
但是, 字元有必要為人所容易理解的介面(要不然誰看得懂101010110是啥鬼)
例如早期的文字是使用 8bit(更早期沒有文字就只用4bit囉)
那時候根本只有美國做為主流,在開發、應用電腦, 8bit就足夠了
後來多國語言加入 8bit逐漸被淘汰
這其中還牽涉到轉換
機械語言 <-> 低階語言 <-> 高階語言
機械語言就是 10101
高階語言是各種程式編寫碼
低階語言是...不知道怎麼減略說明
http://0rz.tw/323hv
不知道是那一個部分在使用 4bit, 或者說現在還在使用
我只知道現在集成電路技術、高階語言都很發達, 很闊氣的使用32bit、64bit
Orz
這問題常常到處有人討論, 建議原PO到處爬爬文看看 (我自己也沒爬文....逃~)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.244.42
1F:推 HuangJC:你也說了,不是做不出來,是成本考量;而成本考量一直在變 06/03 01:16
2F:→ HuangJC:我說的是真的,不過最後總會出現主流啦;沒看過規格大戰嗎? 06/03 01:16
3F:→ HuangJC:如果成本考量是很單一的答案,就不會有規格大戰了 06/03 01:17
你要看做成本也可以. 我覺得這只是有沒有充分利用的問題
這樣看就懂了
10進位 2進位 2進位模擬3進位
0 0 00 -> 0
1 1 01 -> 1
2 10 10 -> 2
3 11 100 -> 10
4 100 101 -> 11
9 1001 10000 -> 100
10 1010 10001 -> 101
3進位每個byte是由二個2進位位元組成
這種轉換,在數字越來越大時,
如10進位的10, 用 2進位模擬3進位的結果,
> 10進位 2進位 2進位模擬3進位
> 10 1010 10001 -> 101
^^^^^
如果10001,當成真正的2進位,看在10進位中是17
在擬3進位中卻只能代表10, 足足有 7/17的無意義位元....
※ 編輯: xiaoa 來自: 140.112.244.42 (06/03 01:41)
4F:推 HuangJC:多位元CPU到後來,用幾顆電晶體是一種成本;但有幾根腳也是 06/03 01:27
5F:→ HuangJC:當聯外腳位不夠,就可能動腦筋想到奇奇怪怪的組合上去 06/03 01:28
6F:推 HuangJC:不過為了和傳統理論結合,一般還是用二進位*多位元解讀 06/03 01:30
7F:→ HuangJC:所謂'電腦用x進位'這樣的字眼是很麻煩的,業者會輕輕帶過 06/03 01:31
8F:推 HuangJC:不會..會直接開發三態電晶體線路,沒那麼多浪費 06/03 01:45
9F:→ xiaoa:你把那些東西拿來利用,它就不再是3進位了, 是2進位... 了不? 06/03 01:47
10F:推 HuangJC:你去看我上一篇修文吧,這個是有在用的,只差我背不出IC型號 06/03 01:48
11F:→ xiaoa:因為你的系統始終是基於 2進位的基礎.... 06/03 01:48
12F:→ HuangJC:它不是浪費,倒是種創意;但未接觸該領域前我們不提,因為其 06/03 01:49
13F:→ HuangJC:他東西已經讀得快爆肝了,不會一次都和你提 06/03 01:50
14F:→ HuangJC:這裏有編碼的啦..不是基於2進位;擔心編碼拖慢速度就好 06/03 01:50
15F:→ HuangJC:所以把速度當成一種成本,再混進去,一路規格大戰下來~ 06/03 01:51
16F:→ HuangJC:應該說,二進化存在你的電腦螢幕上,方便你解讀;但你如果拿 06/03 01:52
17F:→ HuangJC:一根探針插進電路想讀到二進位..我怕現在電腦不單純了 06/03 01:53
18F:→ HuangJC:所以二進位?那都是在螢幕上,方便你想像的 06/03 01:53
你想太多了....一切都半導體惹的禍
現在想要開發量子電腦就是希望破除半導體這樣的拘限
量子電腦強並不是因為量子很小, 而是因為量子運算單元可以擁有 0 1 以外的態
※ 編輯: xiaoa 來自: 140.112.244.42 (06/03 02:47)
※ 編輯: xiaoa 來自: 140.112.244.42 (06/03 02:51)
19F:推 HuangJC:這句話拷貝到了字眼,沒拷貝到精神.. 06/03 02:50
20F:→ HuangJC:要擁有 0 1 以外的態,不必到量子,我們就辦到了 06/03 02:50
21F:→ HuangJC:如果我今天給你的挑戰是'把 CPU 聯外接腳減半',那就有趣了 06/03 02:51
22F:→ HuangJC:一根接腳只能代表 0 或 1? 不..要代表四種電壓我也想試試 06/03 02:51
23F:→ HuangJC:但回到抽象概念,四種電壓你可以想像成2bit,所以這樣想就好 06/03 02:52
24F:→ xiaoa:有CPU是半導體以外的東西做的,請告訴我,謝謝 06/03 02:52
25F:→ HuangJC:我是說,用半導體就做到了;所以何必改材料呢? 06/03 02:53
26F:→ xiaoa:如果你是增加運算單元的體積, 那跟增加運算單元是一樣的.... 06/03 02:54
27F:→ xiaoa:去寫論文吧. 我等你 ~>.^ 06/03 02:55
28F:推 HuangJC:接腳空間愈來愈不夠用,而CPU內部卻愈做愈密;新的成本問題 06/03 02:56
29F:→ HuangJC:你看懂我上一句就夠了,幹麻有論文.. 06/03 02:56
你只告訴我, 半導體除了體現"通電"和"不通電"以外, 還有什麼第3態就夠了
真的也不必寫什麼論文
※ 編輯: xiaoa 來自: 140.112.244.42 (06/03 02:59)
30F:→ HuangJC:接腳不夠的一個方法,是重覆使用接腳(分時態),但要加快時脈 06/03 02:58
31F:→ HuangJC:而加快時脈也是一種成本;反正就一直競爭啦~ 06/03 02:58
32F:→ HuangJC:但不變的是,中央單元像一堆寫好的副程式,已經有很多成品 06/03 02:59
時脈數再怎麼增加、改變,
每一次的運算仍然是2進位的半導體在做......
※ 編輯: xiaoa 來自: 140.112.244.42 (06/03 03:01)
33F:→ HuangJC:(硬體描述語言)所以很少人會自找麻煩,寫不一樣的東西 06/03 03:00
34F:→ HuangJC:我剛不是說了,-5,0,+5 這三種電壓就可以三態了嗎? 06/03 03:01
我上面說過了, 請問你的第三態是什麼?
半通電? 超通電? 非常不通電?
※ 編輯: xiaoa 來自: 140.112.244.42 (06/03 03:03)
35F:→ HuangJC:我們不會讓這想法入侵到中央單元,你寫組語也開心的當2進位 06/03 03:02
36F:→ HuangJC:就好;但是週邊,或晶片間,那就各顯神通了 06/03 03:03
37F:推 pureblue:我認為Xia不必再回,這非本行的容易聚焦錯誤。 06/03 09:32
38F:→ pureblue:Xia你講的夠清楚了,真想知道,白色算盤本唸通就行。 06/03 09:33
39F:推 freef1y3:現在的CPU都是用二進位為主的邏輯閘兜出來的吧 06/03 09:54
40F:→ freef1y3:如果要用三進位可能整個邏輯系統都要重新發展.. 06/03 09:55
41F:→ HuangJC:對,是成本的問題;但在特殊用途或非主流時還是看得到 06/03 10:13
42F:→ HuangJC:目前就算內部不是這樣做,在抽出介面時還是會做成這樣子 06/03 10:14
43F:→ HuangJC:到最後我們無法以 bus 寬度來當標準,可能是以 ALU 當標準 06/03 10:15
44F:→ HuangJC:那 ALU 是以二進位運算嗎?(比如加法,是一個一個位元疊加?) 06/03 10:16
45F:→ HuangJC:也不是,事實上多位元疊加用查表比較快;但你畢竟可以用位元 06/03 10:17
46F:→ HuangJC:疊加來理解它.那我們又以ALU能控制的最小單元來定義嗎? 06/03 10:17
47F:→ HuangJC:如果我們用 CPU 邊界接腳來定義,那怎麼又對混合型 IC 視而 06/03 10:19
48F:→ HuangJC:不見?我用過18條位址線的 IC,一道指令就發出 SIN 波 06/03 10:20
49F:→ HuangJC:這個是專用用途 DSP,數位及類比 IC 的混合 06/03 10:21
50F:→ HuangJC:更妙的是現在燒錄 IC 大行其道,可以取得授權自己燒.. 06/03 10:22