我有一个功课问题是使用shift运算符将用户定义的32位int转换为二进制。我想出了这段代码:
getSharedPreferences()
运行得很好。作业的第二部分是详细说明并略微修改该代码,将用户定义的32位int转换为基数为8的数字,再次使用移位运算符。我不能为我的生活弄清楚如何使这项工作。
编辑:我已经尝试了一个开关,正如有人刚评论过的那样unsigned int num;
int x = 31;
cout << "Number to be converted: ";
cin >> num;
while (x >= 0)
{
int y = num >> x; //using the shift operator
if (!(y % 2))
cout << "0";
else
cout << "1";
x--;
}
cout << endl << endl;
但这些选项都没有给我正确的输出答案。
答案 0 :(得分:0)
请注意,二进制的每三位给出相应的八进制值。所以我们可以简单地做三个班次并确定价值。
while (x >= 0)
{
int y = num >> x; //using the shift operator
x--;
int z = num >> x;
x--;
int a = num >> x;
x--;
int total = 4 * y + 2 * z + a;
cout << total;
}
答案 1 :(得分:0)
另一种方法是使用移位和屏蔽:
unsigned int value;
unsigned int right_octal_digit = value & 0x07; // Mask off all but lower 3 bits.
unsigned int middle_octal_digit = (value >> 3) & 0x07;
unsigned int left_octal_digit = (value >> 6) & 0x07;
// ... etc.
八进制数字使用3个二进制位。