二进制转化
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;
}
總結
- 上一篇: 2022中秋节有哪些看好又实用的中秋礼品
- 下一篇: Stata结果输出:outreg2命令详