如何不在 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);
}

Demo