将十进制数522转换为二进制、八进制以及十六进制

来源:百度知道 编辑:UC知道 时间:2024/09/28 11:20:41

用除2取余的方法就行.
522除2是商261余0
261除2是商130余1
130除2是商65余0
65除2是商32余1
32除2是商16余0
16除2是商8余0
8除2是商4余0
4除2是商2余0
2除2是商1余0
1除2是商0余1
将余数按反方向连起来是1000001010就是相应的二进制数
即 522=1000001010B
转换成8或16进制数则用除8或16取余的方法(类推)

522除8是商65余2
65除8是商8余1
8除8是商1余0
1除8是商0余1
将余数按反方向连起来是1012就是相应的八进制数
即 522=1012Q

522除16是商32余10即AH
32除16是商2余0即0H
2除16是商0余2即2H
将余数按反方向连起来是20A就是相应的十六进制数
即 522=20AH

八进制以及十六进制也可以由二进制分别对应3位和4位得到。
522=1000001010B
=10 0000 1010 B =20AH
=1 000 001 010 B =1012Q

二进制:1000001010.
算法:522=1*(2的9次方)+0*(2的8次方)+0*(2的7次方)+0*(2的6次方)+0*(2的5次方)+0*(2的4次方)+1*(2的3次方)+0*(2的2次方)+1*(2的1次方)+1*(2的0次方)。

八进制:1012.
算法:522=1*(8的3次方)+0*(8的2次方)+1*(8的1次方)+2*(8的0次方)。

十六进制:20A。
算法:522=2*(16的2次方)+0*(16的1次方)+10*(16的0次方)。
(10=A,11=B,12=C,13=D,14=E,15=F)

#include "stdio.h"
void decToBin(int num,int b