所以我正在Visual Studio上使用C,我有三个输入:a
,b
和c
。我目前已对其进行了设置,因此我可以为每个输入输入用户定义的条目,但只能输入0
和1
。
int selection;
int A;
int B;
int C;
unsigned char output;
_Bool runProgram = 1;
_Bool Results(_Bool needThirdInput)
{
printf("\nEnter your value for A: ");
scanf_s("%d", &A);
printf("Enter your value for B: ");
scanf_s("%d", &B);
if (A == 0 || A == 1)
{
if (B == 0 || B == 1)
{
if (needThirdInput)
{
printf("Enter your value for C: ");
scanf_s("%d", &C);
if (C == 0 || C == 1)
{
return 1;
}
}
else
{
return 1;
}
}
}
printf("Input A must be either 1 or 0\n\n\n");
return 0;
}
所以我需要将数字保留为二进制,所以可以说我输入abc
为111
我相信我需要输出110
作为左移。
如果是右移,我将需要011
。
我将如何正确完成左移过程?
下面有人建议,但似乎不起作用。
output = (A << 2) | (B << 1) | (C << 0);
printf("\n The output for Shift Left is %d\n\n\n", output);
使用
output = (A << 2) | (B << 1) | (C << 0);
您构造原始值(例如二进制111
)。然后,您需要转换该值以获得所需的结果:
output = ((A << 2) | (B << 1) | C) << 1;