首頁>Program>source

在C ++中,

  • Why is a boolean 1 byte and not 1 bit of size?
  • Why aren't there types like a 4-bit or 2-bit integers?

在為CPU編寫模擬器時,我錯過了上述內容

最新回復
  • 5月前
    1 #

    因為CPU無法尋址小於位元組的任何內容。

  • 5月前
    2 #

    摘自wikipedia:

    Historically, a byte was the number of bits used to encode a single character of text in a computer and it is for this reason the basic addressable element 在许多計算機中 建筑。

    所以位元組是 the 基本可尋址單元,計算機體系結構無法在其下尋址.而且由於(可能)不存在支援4位位元組的計算機,因此您没有 4-bit bool

    但是,如果您可以設計這樣一種架構,该架構可以將4位地址作為基本可尋址單元,那麼您將拥有 bool 那麼大小只有4位,仅在那台計算機上!

  • 5月前
    3 #

    最簡單的答案是; 這是因為CPU用位元組而不是位来尋址記憶體,並且按位運算非常慢。

    但是,可以在C ++中使用位大小分配.位元向量有std :: vector专門化,並且結構也接受位元大小的條目。

  • 5月前
    4 #

    在過去,我不得不在狂暴的暴风雪中上學,双向上山,午餐是 無論我们可以在學校後面的樹林中追蹤並用裸手杀死的動物,計算機的可用記憶體都比今天少得多.我曾经使用的第一台計算機具有6K RAM.不是6兆位元組,不是6千兆位元組,就是6 KB.在這種環境下,將尽可能多的布林值打包到一个int中是很有意義的,因此我们会定期使用運算將它们取出並放入。

    如今,当人们会嘲笑您只有1 GB的RAM,而唯一能找到少於200 GB的硬碟的地方是在一家古董店時,打包這些位是不值得的麻煩. / p>

  • 5月前
    5 #

    您可以使用1位布林值以及4位和2位整數.但這將匯致没有效能提升的怪異指令集,因為這是查看架構的不自然方式.實際上,"浪费"位元組的更好部分而不是尝試迴收未使用的資料確實很有意義。

    根据我的经驗,唯一麻煩將多个布林值打包為單个位元組的應用程式是Sql Server.

相似問題

  • javascript:服務JSONP的最佳內容型別?
  • css:两个div,一个固定宽度,另一个固定宽度