相关疑难解决方法(0)

找到位数组中设置的最高有效位(最左侧)

我有一个位数组实现,其中第0个索引是数组中第一个字节的MSB,第8个索引是第二个字节的MSB,等等...

找到这个位数组中设置的第一个位的快速方法是什么?我查找的所有相关解决方案都找到了第一个最重要的位,但我需要第一个最重要的解决方案.所以,给定0x00A1,我想要8(因为它是左起第9位).

c 32-bit bit-manipulation

38
推荐指数
5
解决办法
7万
查看次数

有没有办法在编译时计算整数类型的宽度?

char字节为单位的整数类型(或任何类型)的大小很容易计算为sizeof(type).一个常见的习惯用法是乘以CHAR_BIT找到该类型占用的位数,但是在使用填充位的实现中,这将不等于值位的宽度.更糟糕的是,代码如下:

x>>CHAR_BIT*sizeof(type)-1
Run Code Online (Sandbox Code Playgroud)

如果CHAR_BIT*sizeof(type)大于实际宽度,实际上可能有未定义的行为type.

为简单起见,我们假设我们的类型是无符号的.那么宽度typeceil(log2((type)-1).有没有办法将此值计算为常量表达式?

c integer padding width

14
推荐指数
2
解决办法
2893
查看次数

标签 统计

c ×2

32-bit ×1

bit-manipulation ×1

integer ×1

padding ×1

width ×1