我正在尝试编写一个程序,该程序从用户那里获取字符串输入'0'和'1',然后使用给定的字符串来更改另一个变量的每一位。
即
char input[20];
unsigned short bits = 0;
printf("Enter a binary string of 16 bits.\n");
fgets(input, 20, stdin);
input[strlen(input) - 1] = '\0';
是我必须从用户那里获取并存储两个字节的字符串的地方。然后,我想使用该字符串并操纵变量“位”以匹配输入的内容。
因此,如果用户输入10011001 10011001,我想将'unsigned short bits'的值从全0更改为二进制的匹配值。
我现在的想法是,我可以在每次通过时循环遍历输入字符串和左移“位”,但据我所知,左移将始终丢弃最左边的位,并添加0作为最右边的位。有没有一种方法可以使用我不知道的一些按位命令将1作为最左边的位添加,以便如果循环在字符串中看到“ 1”,则会在最右边的位添加1?
使用bits = (bits << 1);
移0。使用bits = (bits << 1) | 1;
移1。
那会工作。
在循环中,如果字符为bits
,则首先将OR
左移,然后是1
1:
bits |= 1;