二进制转换器

xiaoxiao2021-02-28  522

实现输入一个十进制数,输出其对应的二进制数

方法一:自创数组法

#include<stdio.h> #include<math.h> #include<stdlib.h> int main() { int i,n; long long m; printf("请输入一个十进制数:"); scanf("%lld",&m); n=log(m)/log(2)+2;//用到数学中的换底公式求以2为底的对数 char t[n]; memset(t,'0',sizeof(t)); for(i=0;i<n;i++) { if(m>pow(2,n-i-1)) { m-=pow(2,n-i-1); t[i]='1'; } else if(m==pow(2,n-i-1)) { m-=pow(2,n-i-1); t[i]='1'; } } t[n]='\0'; printf("%s",t); }

方法二 bitset法:

#include<bits/stdc++.h> using namespace std; int main() { int n; long long m; scanf("%lld",&m); n=log(m)/log(2)+1; cout<<bitset<32>(m); }

两者的对比:第一种手写的方法可以将结果存入字符数组中,方便后续的操作,但是,对比window中的计算器后发现,在十进制数位19个8时计算结果出错,window的上限是19位10进制数,而方法二的结果与windows一致。

转载请注明原文地址: https://www.6miu.com/read-1787723.html

最新回复(0)