【代码】
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
int i,bin=0,num=0,count=1,item=0;
cout<<"decimal"<<'\t'<<"binary"<<'\t'<<"octal"<<'\t'<<"hexadecimal"<<endl;
for(i=1;i<=256;i++)
{
count=1;
bin=i%2;
num=i/2;
while(num>=1)
{
count++;
item=num%2;//每一次求余直至除尽
bin=item*pow(10.0,(double)(count-1))+bin;
num/=2;
}
cout<<dec<<i<<'\t';
cout<<dec<<bin<<'\t';
cout<<oct<<i<<'\t';
cout<<hex<<i<<endl;
}
system("pause");
return 0;
}
【解释】
用到了除商取余法求二进制。比如十进制数26,我们每次给它整除2,每次把余数留下。然后把每次留下的余数去乘十(第一次余数是乘10的0次方),下一次的余数总是比上一次多乘一次10,再把结果相加。
count记录到底每次乘多少10,其实就是整除了多少次就余数乘多少次10。