我正在尝试用C语言做一个汉明码解码器和编码器,我找不到一种方法来单独设置变量的位。例如,我正在尝试做以下事情:
#include "stdio.h" int main () { short block = 0010101110001110; // variable to contain the bits to decode }
显然,这是行不通的,但我想知道是否有办法做到这一点,或者我将不得不定义为它所代表的实际数字?
wz8daaqr1#
您可以使用十六进制表示法,其中每个数字正好代表4位。
unsigned short block = 0x2b8e;
czfnxgou2#
下一个版本的C C2x预计将支持像0b0010101110001110这样的二进制常量。现在,考虑十六进制常量或宏。提示:典型地,这样的代码最适合 unsigned 类型。
0b0010101110001110
#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);
2条答案
按热度按时间wz8daaqr1#
您可以使用十六进制表示法,其中每个数字正好代表4位。
czfnxgou2#
下一个版本的C C2x预计将支持像
0b0010101110001110
这样的二进制常量。现在,考虑十六进制常量或宏。
提示:典型地,这样的代码最适合 unsigned 类型。