C语言 有没有一种方法可以通过组成变量的位来设置变量的值?

5vf7fwbs  于 2023-02-18  发布在  其他
关注(0)|答案(2)|浏览(403)

我正在尝试用C语言做一个汉明码解码器和编码器,我找不到一种方法来单独设置变量的位。
例如,我正在尝试做以下事情:

#include "stdio.h"

int main () {
    short block = 0010101110001110; // variable to contain the bits to decode
}

显然,这是行不通的,但我想知道是否有办法做到这一点,或者我将不得不定义为它所代表的实际数字?

wz8daaqr

wz8daaqr1#

您可以使用十六进制表示法,其中每个数字正好代表4位。

unsigned short block = 0x2b8e;
czfnxgou

czfnxgou2#

下一个版本的C C2x预计将支持像0b0010101110001110这样的二进制常量。
现在,考虑十六进制常量或宏。
提示:典型地,这样的代码最适合 unsigned 类型。

#define BIN16U(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) ( \
   ((unsigned)(a)<<15) | ((b)<<14) | ((c)<<13) | ((d)<<12) | \
             ((e)<<11) | ((f)<<10) | ((g)<< 9) | ((h)<< 8) | \
             ((i)<< 7) | ((j)<< 6) | ((k)<< 5) | ((l)<< 4) | \
             ((m)<< 3) | ((n)<< 2) | ((o)<< 1) | ((p)<< 0))

unsigned short block = BIN16U(0,0,1,0, 1,0,1,1, 1,0,0,0, 1,1,1,0);

相关问题