我正在做作业
我无法弄清楚如何做这个部分
这是我到目前为止所拥有的
int main()
{
char n[90];
char method[90];
unsigned int num1;
int methodlength;
unsigned int num2;
int d;
unsigned int answer;
printf("Type in an expression: ");
gets(n);
sscanf(n, "%x %s %x", &num1, method, &num2);
if(strcmp(method, "asr") == 0)
{
printf("The answer is: %x", answer);
}
else if(strcmp(method, "rol") == 0)
{
printf("The answer is: %x", answer);
}
else if(strcmp(method, "ror") == 0)
{
printf("The answer is: %x", answer);
}
}
答案 0 :(得分:1)
您可以使用位掩码来播放位。
您可能会发现以下链接很有用
1. Wikipedia : Mask
2. Topcoder: Bitmasking
例如,ROL可以作为
完成unsinged int arg = something;
unsigned int howmanytimes = some_other_thing;
unsigned int answer = (arg << howmanytimes) | (arg >> (sizeof(arg) * CHAR_BIT - howmanytimes));
在研究了一些关于屏蔽的内容之后,您应该能够理解该示例并自己编写其余的操作。如果你不了解任何具体的事情,请随时发表评论并提出要求。
答案 1 :(得分:0)
我不认为你可以使用一个简单的操作。您可以将它实现为“按位”和“移位”的组合: 左旋:用&amp;保存数字的前2位。 0xc0000000,然后向左移动2,然后用你保存的数字替换数字的最后几位。
如果需要,请参阅http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/bitshift.html以获取有关位移的更详细说明。