作者 主題: bool的大小  (閱讀 7012 次)

0 會員 與 1 訪客 正在閱讀本文。

asdf

  • 憂鬱的高中生
  • ***
  • 文章數: 115
    • 檢視個人資料
bool的大小
« 於: 2005-06-21 23:45 »
我用c++顯示bool變數的大小:
cout << sizeof(bool) << endl;
結果是1 Bite
和char一樣大
可是bool只有0和1
應該只要一個位元,不用一個位元組吧?
he important thing is not to stop questioning.
                                             -- Albert Einstein

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
Re: bool的大小
« 回覆 #1 於: 2005-06-28 20:24 »
引述: "asdf"
我用c++顯示bool變數的大小:
cout << sizeof(bool) << endl;
結果是1 Bite
和char一樣大
可是bool只有0和1
應該只要一個位元,不用一個位元組吧?


那麼!1bit 如何儲存在記憶體中呢?

asdf

  • 憂鬱的高中生
  • ***
  • 文章數: 115
    • 檢視個人資料
Re: bool的大小
« 回覆 #2 於: 2005-06-29 23:33 »
引述: "螢火飛"

那麼!1bit 如何儲存在記憶體中呢?

我的書上寫著:
很少機器能讓你直接(將memory)定址到個別的位元。
真的嗎?
這是為什麼?
he important thing is not to stop questioning.
                                             -- Albert Einstein

anderson1127

  • 訪客
Re: bool的大小
« 回覆 #3 於: 2005-06-29 23:41 »
引述: "asdf"

我的書上寫著:
很少機器能讓你直接(將memory)定址到個別的位元。
真的嗎?
這是為什麼?


因為,你問的問題牽涉到Computer Architecture 的CPU內部架構問題
再回答你這細部問題的話,要去書堆中搬出積了厚厚的灰塵,然後一個一個
引導你進入來瞭解 (誰會吃飽撐著沒事做??)

不如讓你去唸資工相關科系的學校,這樣你就會懂了(我看還不見得能懂,搞不好直接當掉)

總之,你就把他當做定律,跟你每天要吃飯喝水一樣自然就好!!

CROMA

  • 可愛的小學生
  • *
  • 文章數: 6
    • 檢視個人資料
Re: bool的大小
« 回覆 #4 於: 2005-08-01 22:50 »
引述: "asdf"
引述: "螢火飛"

那麼!1bit 如何儲存在記憶體中呢?

我的書上寫著:
很少機器能讓你直接(將memory)定址到個別的位元。
真的嗎?
這是為什麼?


因為效率的問題阿 在 外部的記憶體
一個 bit 的存取時脈跟 一個 64bit(視 CPU 的資料 Bus 寬度) 的資料是 一樣的
一般常見的 1 bit 存取 大都是在 晶片內部的旗標處理

asdf

  • 憂鬱的高中生
  • ***
  • 文章數: 115
    • 檢視個人資料
Re: bool的大小
« 回覆 #5 於: 2005-08-08 06:39 »
引述: "CROMA"

因為效率的問題阿 在 外部的記憶體
一個 bit 的存取時脈跟 一個 64bit(視 CPU 的資料 Bus 寬度) 的資料是 一樣的
一般常見的 1 bit 存取 大都是在 晶片內部的旗標處理

那是不是一個 bit 的定址比 64bit 花較多的時間?
he important thing is not to stop questioning.
                                             -- Albert Einstein

Linuxice

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
bool的大小
« 回覆 #6 於: 2005-08-30 08:31 »
在下的文筆不好,但請你體會一下吧,一切都是因為速度===>

相信您知道「磁片」這種東西吧,「零錢」您也知道吧===>

請教一下,100個1元零錢去找90元與10個十元去找90元,誰比較快???相信是十元吧

雖然可能會碰到十元無法處理的情形(如:79元=7個十元+9個一元),但是就「個數」上而言十元就比較吃香了

「磁片」這種東西也是一樣,當你在尋找資料的時候一定是一群一群去找才會快(我記得是32bits),如果1個bit接1個bit去找,那就花很長的時間了

所以雖然「布林數」只有0與1,但為了速度,大家還是一視同仁,都用byte為同一個單位,當然啦,「布林數」還是只有用到其中2bits,將來不管「運算」如何,同一個單位才不用轉換,速度才不會浪費在「單位轉換」上

然後大家常常說的:
DOS(16Bits)+Windows or Linux(32bits)+Win64x(64bits)
windows程式速度>dos程式速度
雖然不太正確,但是就是它們一群一群的大小不同,而產生的差異