日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

二进制转化

發布時間:2024/8/24 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 二进制转化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2017-08-2810: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;
}

總結

以上是生活随笔為你收集整理的二进制转化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。