这里有几个想法,我正在学习,所以可能有错误,甚至遗漏了一些基本知识。
sizeof运算符返回字节数。number of bits in byte不是常量值(更正我,但它是char拥有的位数)。因此,我想出了一段(可能是不必要的)代码:
#include <stdio.h>
#include <math.h>
#include <limits.h>
int main(void)
{
double bits;
bits=sizeof(int)*log10(UCHAR_MAX+1)/log10(2);
printf("Bits = %lf\n", bits);
return 0;
}是否有更简单(标准)的方法来检查给定类型的bits占用了多少?
CHAR_BIT * sizeof(type)将完成这项工作,但是是否有标准的one argument宏/函数为我做这件事?
有较好数学背景的人可以检查我的代码是否总是给出正确的答案。
发布于 2013-10-08 09:57:42
如果要检查机器实际用于单个字符的位数,请使用CHAR_BIT宏(请注意,根据定义,sizeof (char)将始终返回一个位,尽管每个字符的实际分配大小可能更高(甚至32位),尽管这是浪费的)。
我不知道任何预定义的宏,但是
#define REAL_BITS(type) (CHAR_BIT*sizeof(type))应该就够了
发布于 2013-10-08 10:13:18
const size_t numberOfBits = CHAR_BIT * sizeof(type);发布于 2013-10-08 09:53:27
使用CHAR_BIT (在finds.h中定义)应该这样做。
CHAR_BIT * sizeof(something)我检查了许多*nix平台,它们都是一个字节的8位,但我想在一些陌生的平台上可能会有所不同。
https://stackoverflow.com/questions/19244371
复制相似问题