如何不在 unsigned short int 的二进制表示形式的开头打印零?
How not to print zeros at the beginning of the binary representation of a usigned short int?
我有这样的代码可以将短整数转换为二进制,但开头打印了零。那么这里要如何保证不显示这些零,并且从第一个开始输出呢?同时,使用标准语言运算符和位运算。
int main()
{
unsigned short int k;
while (true)
{
cin >> k;
if (!k)
{
break;
}
for (int i = 0; i < 16; i++)
{
cout << (k >> 15);
k <<= 1;
}
cout << endl;
}
使用递归,你可以这样做:
void print_binary(unsigned int n)
{
if (n >> 1 != 0) print_binary(n >> 1);
std::cout << (n & 1);
}
我有这样的代码可以将短整数转换为二进制,但开头打印了零。那么这里要如何保证不显示这些零,并且从第一个开始输出呢?同时,使用标准语言运算符和位运算。
int main()
{
unsigned short int k;
while (true)
{
cin >> k;
if (!k)
{
break;
}
for (int i = 0; i < 16; i++)
{
cout << (k >> 15);
k <<= 1;
}
cout << endl;
}
使用递归,你可以这样做:
void print_binary(unsigned int n)
{
if (n >> 1 != 0) print_binary(n >> 1);
std::cout << (n & 1);
}