我正在尝试编写一个程序,该程序从用户那里获取字符串输入'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,我想将“无符号短位”的值从全0更改为二进制的匹配值。
我现在的想法是,我可以在每次通过时循环遍历输入字符串和左移“位”,但据我所知,左移将始终丢弃最左边的位,并添加0作为最右边的位。有没有一种方法可以使用我不知道的按位命令将1作为最左边的位添加,以便如果循环在字符串中看到“ 1”,则会在最右边的位添加1?
答案 0 :(得分:2)
使用bits = (bits << 1);
移入0。
使用bits = (bits << 1) | 1;
移1。
答案 1 :(得分:1)
那行得通。
在循环中,首先将bits
向左移动,如果字符为OR
,则首先向1
1移动:
bits |= 1;