2011-03-27 67 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

相关问题