//十进制转换为二进制代码
#include<iostream.h>
char *ok(int n,char *b)
{
static int LEN=8*sizeof(int);
for(int i=LEN-1;i>=0;i--,n>>=1)
b[i]=(01&n)+'0';
b[LEN]='/0';
return b;
}
void main()
{
int v[]={0,1,2,3,4,5,6,7,8,9};
char b[8*sizeof(int)+1];
int i=-1;
while(++i<10)
cout<<ok(v[i],b)<<endl;
}
//二进制转为十进制
//C++ 二进制转为十进制,计算数组最后一个元素的下标值
#include<iostream>
using namespace std;
//十进制转为二进制
char*__bit(int n,char*array,int size)
{
for(int i=size-1;i>=0;i--,n>>=1)
array[i]='0'+(1&n);
array[size]='/0';
return array;
}
//二进制转为十进制(应用了查表法,本程序中的表是mask数组)
int __bit(char *array,int strlen,int *mask,int last_iterator)
{
int temp=0;
for(int i=strlen-1;i>=0;i--)
temp+=(1&(array[i]-'0'))*mask[last_iterator--];
return temp;
}
void main()
{ //一个二进制数中:从右到左,第一位的权值是2的0次方=1,第二位是2的1次方=2,第三位是2的2次方=4,第四位是2的3次方=8,...
int mask[]={2048,1024,512,256,128,64,32,16,8,4,2,1};//这个数组有多少个元素就能求多少位的二进制为十进制,你可以将它向前扩展
int last_iterator=sizeof(mask)/4-1;//不管数组mask有多少个元素,这个语句可以计算出mask的最后一个元素的下标值
cout<<__bit("001",strlen("001"),mask,last_iterator)<<endl;
cout<<__bit("010",strlen("010"),mask,last_iterator)<<endl;
cout<<__bit("011",strlen("011"),mask,last_iterator)<<endl;
cout<<__bit("100",strlen("100"),mask,last_iterator)<<endl;
cout<<__bit("101",strlen("101"),mask,last_iterator)<<endl;
cout<<__bit("110",strlen("110"),mask,last_iterator)<<endl;
}