2011-03-27 62 views
2

在C中,有sizeof運算符來確定給定數據類型或對象的字節大小。如何判斷C中最小單元的大小?

同樣,有CHAR_BIT<limits.h>它被定義爲反映在一個字節的位數。

現在這可能只是一個輕微的假設,但我該如何判斷信息的最小單位可以存儲的不同值的數量,即主機環境是否提供位,節奏,節奏等等。

回答

顯然,C標準假定主機環境上運行位。需要這樣一點才能存儲至少兩個值。

,從這個問題出現了顯着的提案

的三元機的信息的最小單元的名稱:a TIT
的季機的信息的最小單元的名稱:a QUIT

+0

'CHAR_BIT'應該反映'char'中的位數,而不是'byte'中的位數。一個字節總是8位。 – 2011-03-27 10:02:01

+1

一個字節更準確地定義爲用於存放字符的存儲量,通常是8位,但不一定是。 – templatetypedef 2011-03-27 10:07:28

+1

在C中,一個字節「由一個連續的位序列組成,其數量是實現定義的。」 templatetypedef再次正確,一個字節也是一個「可尋址的數據存儲單元,其大小足以容納執行環境的基本字符集的任何成員。」一個字符被定義爲一個字節。 – Philip 2011-03-27 10:14:01

回答

9

我認爲按位定義一個二進制數字必須是零或一,所以答案總是兩個(或者是0或者1)。

編輯:迴應你的新問題,我相信沒有標準的方法來做到這一點。與c ISO規格(N1124,§ 3.5/1)定義了一個比特作爲

數據存儲在執行環境大到足以容納一個對象,它可以保持兩個值中的一個的單元。

由於C規範試圖最大限度地提高語言的可移植性,因此它沒有指定超出這一點的是什麼。這意味着,從C內部,你不能告訴任何比這更大的一點。

+6

正確的+1。也因爲每次我看到你的名字,我想它說「模板牛肉」... – corsiKa 2011-03-27 09:48:21

+0

@ glowcoder:lol – 2011-03-27 09:49:18

+0

顯然,我不是唯一一個注意到這一點的人。 – corsiKa 2011-03-27 09:51:12

3

術語BIT是 -inary DIG-IT的收縮,所以顧名思義它有正好有兩個可能的狀態。沒有歧義或實現定義的行爲,只是數學上的確定性。

+0

templatetypedef的答案的重複,所以這裏是我的評論的重複:你說得對,但那不是我想知道的。我重新提出了這個問題。 (我曾經問過這個大小) – Philip 2011-03-27 09:57:46

+2

@Philip:它不是重複的。 @Template說*「我認爲」*,而我* *確定*。但更重要的是,我解釋了術語BIT的推導,其中的知識意味着答案(對於您的原始問題)。最後C沒有爲假設的計算機定義。如果你正在研究一個*三態*機器,那麼大概無論設計運行哪種語言都會有三態數字值。我很喜歡這樣的一個數字可能被稱爲TIT,或者甚至是具有QUIT的* quaternary *系統。 – Clifford 2011-03-27 10:35:21

+0

對於QUIT爲+1。也可能被證明是一個常見的拼寫錯誤。 – Philip 2011-03-27 10:41:58

1

可以聲明一個結構來保持單個位:

typedef struct _bit_t { 
    int bit: 1; 
} bit_t; 

好,的sizeof(bit_t)可以得到1或4,因爲定位的,我不知道。

通常,一個字節應該是最小的整數類型。你應該總是爲了這個目的使用字節,以使你的程序可移植。如果你根本不關心可移植性,例如,你正在編寫8051或PIC程序,那麼你可以使用位類型,它與字節無關。

要聲明一個字節,您可以安全地將其聲明爲unsigned char,目前,我不知道任何C編譯器的char不是8位。 (任何異常?我想聽聽。)

+1

我的該標準說CHAR_BIT應該至少爲8.然而,我不知道任何一個字節大於8位的現代機器,但我的猜測是(a)有超過0個這樣的機器和( b)如果我不在SO上問愚蠢的問題,我們將永遠聽不到這些問題 – Philip 2011-03-27 10:39:50

+0

@Philip:用'CHAR_BIT> 8'尋找現代「機器」的地方就是DSP,特別是一塊有兩個一個DSP和一個主處理器可能會爲每個(或相同的編譯器,不同的輸出結構和不同的CHAR_BIT)提供不同的C編譯器。如果您發現任何有趣的東西,請在這裏添加它們:http://stackoverflow.com/questions/2098149/什麼樣的平臺,有某事 - 其他 - 不包括─ 8位字符 – 2011-03-27 12:14:08

相關問題