首页 > 其他 > 详细

正整数转化为2进制(双指针的一种方法)

时间:2019-07-26 12:06:39      阅读:53      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include "algorithm" 
#include "cmath"
#include "string"
#include <vector> 
using namespace std;

int main()
{
 int sav[8]={1,2,4,8,16,32,64,128};//2^n事先存储 
 int er[8]={0};//存储二进制01 
 int phigh=7;
 int cur=0;
 int sum=100;
 while(phigh>=0){
 cur+=sav[phigh];
 if(cur>sum){
 cur-=sav[phigh];
 //cout<<"情况1"<<cur<<endl;
 phigh--;//之前忽略了这个    
 //cur=0;
 }
 else if(cur==sum){
     er[phigh]=1;
     //cout<<"情况2"<<cur<<endl;
     break;
 }
 else if(cur<sum){
     er[phigh]=1;
     //cout<<"情况3"<<cur<<endl;
     phigh--;
 }    
     
     
 }
 for(int i=0;i<8;i++){
     cout<<er[i];
 }


}

 常规解法:

#include <iostream>
#include "algorithm" 
#include "cmath"
#include "string"
#include <vector> 
using namespace std;

int main()
{
int sum=100;
vector<int> res; 
while(sum){
res.push_back(sum%2);
sum=sum/2;        
}
reverse(res.begin(),res.end());
for(vector<int>::iterator it=res.begin();it!=res.end();it++)
cout<<*it; 
}

 

正整数转化为2进制(双指针的一种方法)

原文:https://www.cnblogs.com/cstdio1/p/11248555.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!