这是我正在尝试做的事情:
我有两个整数
int a = 0; // can be 0 or 1
int b = 3; // can be 0, 1, 2 or 3
我也希望
unsigned short c
将变量存储在其中。
例如,如果我将 a 存储在 c 中,它将如下所示:
00000000
^ here is a
然后我需要在c里面存储b。它应该如下所示:
011000000
^^ here is b.
此外,我想在写完这些数字后再阅读这些数字。 我怎么能这样做?
感谢您的建议。
答案 0 :(得分:3)
假设这些是数字的二进制表示,并假设你真的打算在b的右边有五个零
01100000
^^ here is b
(a a和b重叠的方式)
然后就是这样做
// write a to c
c &= ~(1 << 7);
c |= a << 7;
// write b to c
c &= ~(3 << 5);
c |= b << 5;
// read a from c
a = (c >> 7)&1;
// read b from c
b = (c >> 5)&3;
答案 1 :(得分:0)
您可以使用C++ Bit Fields完成此操作:
struct MyBitfield
{
unsigned short a : 1;
unsigned short b : 2;
};
MyBitfield c;
c.a = // 0 or 1
c.b = // 0 or 1 or 2 or 3