十进制转换为二进制代码
03 | char *ok(int n,char *b) |
05 | static int LEN=8*sizeof(int); |
06 | for(int i=LEN-1;i>=0;i--,n>>=1) |
14 | int v[]={0,1,2,3,4,5,6,7,8,9}; |
15 | char b[8*sizeof(int)+1]; |
18 | cout<<ok(v[i],b)<<endl; |
二进制转为十进制
01 | //C++ 二进制转为十进制,计算数组最后一个元素的下标值 |
06 | char*__bit(int n,char*array,int size) |
08 | for(int i=size-1;i>=0;i--,n>>=1) |
14 | //二进制转为十进制(应用了查表法,本程序中的表是mask数组) |
15 | int __bit(char *array,int strlen,int *mask,int last_iterator) |
18 | for(int i=strlen-1;i>=0;i--) |
19 | temp+=(1&(array[i]-'0'))*mask[last_iterator--]; |
25 | //一个二进制数中:从右到左,第一位的权值是2的0次方=1,第二位是2的1次方=2,第三位是2的2次方=4,第四位是2的3次方=8,... |
26 | int mask[]={2048,1024,512,256,128,64,32,16,8,4,2,1};//这个数组有多少个元素就能求多少位的二进制为十进制,你可以将它向前扩展 |
27 | int last_iterator=sizeof(mask)/4-1;//不管数组mask有多少个元素,这个语句可以计算出mask的最后一个元素的下标值 |
28 | cout<<__bit("001",strlen("001"),mask,last_iterator)<<endl; |
29 | cout<<__bit("010",strlen("010"),mask,last_iterator)<<endl; |
30 | cout<<__bit("011",strlen("011"),mask,last_iterator)<<endl; |
31 | cout<<__bit("100",strlen("100"),mask,last_iterator)<<endl; |
32 | cout<<__bit("101",strlen("101"),mask,last_iterator)<<endl; |
33 | cout<<__bit("110",strlen("110"),mask,last_iterator)<<endl; |
43 | Press any key to continue |
转载于:https://my.oschina.net/ypimgt/blog/101304