s********a 发帖数: 1447 | 1 请教一下 如何写一个struct
这个struct里面只有 4个项 每个占 1bit
我写了一个
struct {
unsigned char priority :1;
unsigned char nonpriority :1;
unsigned char empty :1;
unsigen char full :1;
}flag;
但是这个占了bit 因为是char
如何写这个struct只占4bit
谢谢 |
a****l 发帖数: 8211 | 2 http://en.wikipedia.org/wiki/C_syntax#Bit_fields
【在 s********a 的大作中提到】 : 请教一下 如何写一个struct : 这个struct里面只有 4个项 每个占 1bit : 我写了一个 : struct { : unsigned char priority :1; : unsigned char nonpriority :1; : unsigned char empty :1; : unsigen char full :1; : }flag; : 但是这个占了bit 因为是char
|
s********a 发帖数: 1447 | 3 我是用char写的
但是char也是8bit
只能占用4bit
【在 a****l 的大作中提到】 : http://en.wikipedia.org/wiki/C_syntax#Bit_fields
|
r****o 发帖数: 1950 | 4 是不是可以用unsigned int?
【在 s********a 的大作中提到】 : 我是用char写的 : 但是char也是8bit : 只能占用4bit
|
s********a 发帖数: 1447 | 5 不能用unsigned int 这个32bit了
【在 r****o 的大作中提到】 : 是不是可以用unsigned int?
|
r****o 发帖数: 1950 | 6 恩,好像用unsigned int占用空间更大。
问一下,怎么看一个struct 占用了多少bit啊?用sizeof()好像只能看byte。
多谢。
【在 s********a 的大作中提到】 : 不能用unsigned int 这个32bit了
|
B*******1 发帖数: 2454 | 7 谁出的面试题,用Bit Field写的Code都是Platform Specificde,移植性很低 |
H*X 发帖数: 281 | 8
不是乘以8么?
【在 r****o 的大作中提到】 : 恩,好像用unsigned int占用空间更大。 : 问一下,怎么看一个struct 占用了多少bit啊?用sizeof()好像只能看byte。 : 多谢。
|
s********a 发帖数: 1447 | 9 我也觉得只能看byte。。。
【在 r****o 的大作中提到】 : 恩,好像用unsigned int占用空间更大。 : 问一下,怎么看一个struct 占用了多少bit啊?用sizeof()好像只能看byte。 : 多谢。
|
H*X 发帖数: 281 | 10
不管是char还是int,如果你用uint k : 1, 就是只占用1bit, 只能表示0和1啊
【在 s********a 的大作中提到】 : 我是用char写的 : 但是char也是8bit : 只能占用4bit
|
|
|
r****o 发帖数: 1950 | 11 假设一个结构
struct elem{
unsigned int k : 1;
};
怎么测量它的长度呢?
【在 H*X 的大作中提到】 : : 不管是char还是int,如果你用uint k : 1, 就是只占用1bit, 只能表示0和1啊
|
H*X 发帖数: 281 | 12 一般的cpu框架都是最低支持到byte addressable, 所以一次就是操作一个byte, 你如
果一个struct只想用几个bit, 后边会加上padding bits,筹够是byte的整数 |
r****o 发帖数: 1950 | 13 楼主的题目是写个struct只占4个bit,是不是没法实现了?
【在 H*X 的大作中提到】 : 一般的cpu框架都是最低支持到byte addressable, 所以一次就是操作一个byte, 你如 : 果一个struct只想用几个bit, 后边会加上padding bits,筹够是byte的整数
|
H*X 发帖数: 281 | 14 可以啊, 如果要求就是4项,每个1bit,用bit field标明是:1就可以了, 只不过实际上占
用了1byte而已
你如果说,只能用4bit的空间来存储,这就不太现实了吧 |
s********a 发帖数: 1447 | |
y****w 发帖数: 3747 | 16 没有小于8bit的类型。
非要这样就把char当做两个4bit类型用,在访问函数里面再分段处理。
【在 s********a 的大作中提到】 : 请教一下 如何写一个struct : 这个struct里面只有 4个项 每个占 1bit : 我写了一个 : struct { : unsigned char priority :1; : unsigned char nonpriority :1; : unsigned char empty :1; : unsigen char full :1; : }flag; : 但是这个占了bit 因为是char
|
w******1 发帖数: 520 | 17 这个问题, 我也很困惑啊。
如果是普通的PC机器, 下面的这个STRUCT 改是多少BIT 和BYTE 呢?
struct {
char priority :1;
int abc :3;
float fff:7;
double ddd:8;
}flag; |
B*******1 发帖数: 2454 | 18 所以说这种代码基本上是Machine Specific的。
【在 w******1 的大作中提到】 : 这个问题, 我也很困惑啊。 : 如果是普通的PC机器, 下面的这个STRUCT 改是多少BIT 和BYTE 呢? : struct { : char priority :1; : int abc :3; : float fff:7; : double ddd:8; : }flag;
|