二进制转化 – bitset

2017-08-28 10:55:17

writer:pprp

在之前写了一个关于bitset用法的贴之后,这是第一次运用,不得不说如果不用的话还是一头雾水

以后写代码要标记开始时间,和结束时间了,我认为这是一个好习惯

这次写这个简单的代码也提醒我,应该写一部分就调试一部分,而且一般别用debug,

正式acm的时候用debug很慢,所以如果要调试的话就应该用cout对结果进行输出

题意如下:

题目描述

编写一个函数,其功能是将一个二进制整数的奇数位反转(0变1,1变0)。

输入

输入一个20位以内的二进制数,

输出

输出变换后的二进制数。(注意:二进制数前面如果有0要去掉)

/*
@theme:二进制变换
@writer:pprp
@declare:
@start:10:36
@end:10:55
@date:2017/8/28
*/

#include <bits/stdc++.h>
#include <bitset>

using namespace std;

int main()
{
    int a;
    cin >> a;
    bitset<20>bs(a);
//    test
//    for(int i = 0 ; i < 20 ; i++)
//      cout << bs[i];
//    cout << endl;

    int store[20];

    memset(store, -1, sizeof(store));

    bool flag_begin = 0;

    for(int i = 19 ; i >= 0 ; i--)
    {
        if(!flag_begin && bs[i] == 0)
        {
            continue;
        }
        if(bs[i] == 1)
        {
            store[i] = 1;
            flag_begin = 1;
        }
        else
            store[i] = 0;
    }

//    for(int i = 0 ; i < 20 ; i++)
//      cout << store[i];
//    cout << endl;


    for(int i = 0 ; i < 20 ; i++)
    {
        if(store[i] == -1)
            break;
        if((i+1)%2 == 1)
        {
            if(store[i] == 0)
                store[i] = 1;
            else
                store[i] = 0;
        }
    }

    for(int i= 0 ; i < 20 ; i++)
    {
        if(store[i] == -1)
            break;
        cout << store[i];  
    }
    cout << endl;

    return 0;
}

原文链接: https://www.cnblogs.com/pprp/p/7442855.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/258927

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午12:17
下一篇 2023年2月14日 下午12:18

相关推荐