十进制转二进制的算法,最好有实例

如题所述

十进制转二进制:   用2辗转相除至结果为1 ,将余数和最后的1从下向上倒序写 就是结果   例如302   302/2 = 151 余0   151/2 = 75 余1   75/2 = 37 余1    37/2 = 18 余1   18/2 = 9 余0 9/2 = 4 余1    4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-07
302除以2 = 151 余数为0
151除以2 = 75 余1
75除以2 = 37 余1
37除以2 = 18 余1
18除以2 = 9 余0
9除以2 = 4 余1
4除以2 = 2 余0
2除以2 = 1 余0 注意最后2除以2=1 所以最后的结果加上1答案等于100101110
第2个回答  2013-11-07
十进制转二进制其实不难,是一个连续除以二的过程:如十进制数23,23/2=11余1
11/2=5余1
5/2=2余1
2/2=1余0
所以二进制为0111,也就是把余数倒加起来,就行了。望采纳!
第3个回答  2013-11-07
/*'A':1000001 41 65
'B':1000010 42 66
'C':1000011 43 67
'D':1000100 44 68
'E':1000101 45 69
'F':1000110 46 70
'G':1000111 47 71
'H':1001000 48 72
'I':1001001 49 73
'J':1001010 4A 74
'K':1001011 4B 75
'L':1001100 4C 76
'M':1001101 4D 77
'N':1001110 4E 78
'O':1001111 4F 79
'P':1010000 50 80
'Q':1010001 51 81
'R':1010010 52 82
'S':1010011 53 83
'T':1010100 54 84
'U':1010101 55 85
'V':1010110 56 86
'W':1010111 57 87
'X':1011000 58 88
'Y':1011001 59 89
'Z':1011010 5A 90Press any key to continue*/#include <stdio.h>
#include <string.h>void fun(char *s,int n) { // 将整数n转换为二进制字符串s
int len,i = 0;
char ch;
while(n) {
s[i++] = n % 2 + '0';
n = n / 2;
}
s[i] = '\0';
len = strlen(s);
for(i = 0;i < len/2;i++) {
ch = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = ch;
}
}int main( ) {
char ch;
char s[20];
for(ch = 'A';ch <= 'Z';ch++) {
fun(s,ch);
printf("'%c':%s %0X %d\n",ch,s,ch,ch);
}
printf("\n");
return 0;
}