博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
整数转化为2进制补码(双指针的一种变形)
阅读量:5035 次
发布时间:2019-06-12

本文共 1464 字,大约阅读时间需要 4 分钟。

#include 
#include "algorithm" #include "cmath"#include "string"#include
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"<
<

也可以不用事先存储:(只适合正整数求补码)

#include 
#include "algorithm" #include "cmath"#include "string"#include
#include "bitset"using namespace std;int main(){//如果只是输出就不用事先存储了 int phigh=7; int cur=0; int num=0;//位数 int sum=100; while(phigh>=0){ cur+=pow(2,phigh); if(cur>sum){ cout<<0;num++; cur-=pow(2,phigh); phigh--;//之前忽略了这个 } else if(cur==sum){ cout<<1;num++; break; } else{ cout<<1;num++; phigh--; }} for(int i=1;i<=8-num;i++){
//默认8位 cout<<0; }cout<

常规解法:(只适合正整数求补码)

#include 
#include "algorithm" #include "cmath"#include "string"#include
using namespace std;int main(){int sum=100;vector
res; while(sum){res.push_back(sum%2);sum=sum/2; }reverse(res.begin(),res.end());for(vector
::iterator it=res.begin();it!=res.end();it++)cout<<*it; }

 库函数://正负数都可以

#include
#include
#include
using namespace std;int main(){ bitset<8> t=-125; cout<

 

转载于:https://www.cnblogs.com/cstdio1/p/11248555.html

你可能感兴趣的文章
4/7 第4篇const int * pi/int * const pi的区别
查看>>
POJ 3468 A Simple Problem with Integers
查看>>
单选RadioButton与复选CheckBox按钮
查看>>
数学中余弦定理在搜索中的分类应用——新闻的分类
查看>>
操作系统 chapter2 操作系统运行环境
查看>>
KRPano动态热点专用素材图50多个,加动态热点使用方法
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
12th week blog
查看>>
dijkstra (模板)
查看>>
python小记(3)
查看>>
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>