十进制转二进制后去掉前导零(且只能通过& | ^ 移位)

题目来源及自己的思路

例如: 8=0000000000000000000000000000001000

       只要1000   且且只能通过& | ^ 移位运算### 题目描述

相关代码


#include <iostream>
using namespace std;
{
        int y;
        cin >> y;
    for (int i = sizeof(y) * 8 - 1; i >= 0; i--)
        {
            bool status = (y >> i) & 1;
            cout << status;
        }cout << endl;
bool start = false;
        for (int i = sizeof(y) * 8 - 1; i >= 0; i--)
        {
            bool status = (y >> i) & 1;
            if (status && !start) 
                start = true;
            if (start) 
                cout << status;
        }
    }

你期待的结果是什么?实际看到的错误信息又是什么?

数出到1后1 后面的零没有了 而且还多了一个零

阅读 2.5k
1 个回答

先找出第一个1,记住位置,然后从这个位置走到最后,每次通过1左移对应的位置去&一下,决定输出0还是1

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题