發信人journeyman@kkcity.com.tw (#班布,我命令你,馬上停止),
看板Programming
標 題Re: 為什麼int佔4byte
發信站KKCITY (Sun Sep 10 07:47:00 2006)
轉信站ptt!ctu-reader!Spring!news.nctu!news.ntu!bbs.ee.ntu!news.kkcity.com.tw
※ 引述《enjoydance.bbs@bbs.ntnu.edu.tw (苦力國標魔羯男)》之銘言:
> ※ 引述《journeyman@kkcity.com.tw (#班布,我命令你,馬上停止)》之銘言:
> > 因為CPU的通用暫存器就是這麼寬
> 樓上的答案錯誤吧...@@...
> int 32 bits 並不是因為CPU的通用暫存器的緣故..
> 而是程式的定義就是設定成一個整數的數值範圍可以有2的32位元..
> 改成64位元的CPU並不會改變int的定義長度...@@
最好是啦
若是如你這樣說,那麼定義個60-bit的整數長度不是很好
或者一半,30-bit也很棒,幹嘛多個畸零的2
那麼short, long, long long就可以簡單定義為10, 20, 40-bit
外加一個sign bit變成11, 21, 41-bit
這樣還可以對得上 1K, 1M, 1T 的通用單位,省掉書上解釋這些資料形態格式的麻煩
事實就是這些都受到CPU設計的影響
通用暫存器的寬度會決定最常用的那個資料形態的寬度
因為這樣設計的compiler編出的程式跑起來會最快
但是x86 processors又可以向下相容,一個暫存器可以劈開成兩半來用
大家永遠可以把386當成86來用,不用換compiler
才會有那種資料形態和CPU無關的錯覺
事實是,資料形態就是要跟硬體相關,才會有效率
尤其是C這種涉及system programming的語言
很久很久以前UNIVAC混用36-bit和28-bit,這兩種字寬也是相處了很多年
這不是很棒嘛!反正我愛設計多寬就設計多寬,喔耶!
--
--
┌─────◆KKCITY◆─────┐ ◢╱ 只要你
通過身份認證 ~ ◥█
│ bbs.kkcity.com.tw │ █▉─ 免經驗、五人連署即開班系板 ◥
└──《From:218.160.87.124
》──┘ ◥╲ 趕快為班上設個
秘密基地吧!
◢
--
推 ji3g45j:老兄你超high的耶~其實不只int,連float 218.211.15.82 09/10 12:14
→ ji3g45j:也會變成64bit,高速公路都拓寬成64條了 218.211.15.82 09/10 12:15
→ ji3g45j:還要分成32條公路與32條路肩嗎... 218.211.15.82 09/10 12:16