当我执行我的程序时,它会打印出你输入的字符串中的每个字符的二进制值,我怎么才能得到一个变量中的0和1的集合,我可以在我的void print_bulb中使用它呢(int bit)函数。我只是使用了一个forloop来检查asci值/的剩余部分2打印0表示没有提醒,1表示有提醒,然后除以2,再次检查提醒,一直到我的asci值为0。
#include <cs50.h>
#include <stdio.h>
#include <string.h>
const int BITS_IN_BYTE = 8;
void print_bulb(int bit);
int main(void)
{
// TODO
string l = get_string("enter a string\n");
int a = strlen(l);
for (int i =0; i < a; i++)
{
int c = l[i];
for(int j = 0; j<8; j++)
if ( c % 2== 0)
{
printf("0\n");
int b = c / 2;
c=b;
}
else if(c % 2 ==1)
{
printf("1\n");
int b = c / 2;
c=b;
}
}
}
void print_bulb(int bit)
{
if (bit == 0)
{
// Dark emoji
printf("\U000026AB");
}
else if (bit == 1)
{
// Light emoji
printf("\U0001F7E1");
}
}
1条答案
按热度按时间aurhwmvo1#
由于您打印的值与您要比较的值相同,因此只需打印
c % 2
的值。要从左到右打印位,可以使用位移位代替重复除法。当使用按位操作时,应该使用无符号值。