搜索
首页 电脑/网络 程序设计 C/C++

16进制转换成2进制

16进制转换成2进制

全部回答

2018-02-11

0 0
  十六进制和二进制互转很简单 只要将对应的每一个十六进制数转换成二进制,拼接起来就行了 比如: $ABCD, A==>1010,B==>1011 C==>1100,D==>1101 拼接:1010 1011 1100 1101 这就是二进制结果 由于他们之间有对应关系,你完全可以使用查表的方式进行对应 即:建立十六进制数字和二进制数据之间的对应表,根据十六进制数查找对应的二进制,反过来依然; 楼上的方法是因为他不明白进制之间的关系,效率很低。
  

2018-02-11

153 0
    /*思想:一般16进制化成2进制,每个16进制数化成2进制后先写成4个数字, 每4个4个并起来后再把前面的0去掉 (比如16进制数12A,先把1化成0001,2化成0010,A化成1010,合起来是000100101010,去掉前面的0后就是100101010,就是12A的2进制数)*/ #include #include void judge(char c) { if(c=='0') printf("%d%d%d%d",0,0,0,0); else if(c=='1') printf("%d%d%d%d",0,0,0,1); else if(c=='2') printf("%d%d%d",0,0,10); else if(c=='3') printf("%d%d%d",0,0,11); else if(c=='4') printf("%d%d",0,100); else if(c=='5') printf("%d%d",0,101); else if(c=='6') printf("%d%d",0,110); else if(c=='7') printf("%d%d",0,111); else if(c=='8') printf("%d",1000); else if(c=='9') printf("%d",1001); else if(c=='A') printf("%d",1010); else if(c=='B') printf("%d",1011); else if(c=='C') printf("%d",1100); else if(c=='D') printf("%d",1101); else if(c=='E') printf("%d",1110); else if(c=='F') printf("%d",1111); } void first(char c)/*第一个16进制数转化为2进制*/ { if(c=='1') printf("%d",1); else if(c=='2') printf("%d",10); else if(c=='3') printf("%d",11); else if(c=='4') printf("%d",100); else if(c=='5') printf("%d",101); else if(c=='6') printf("%d",110); else if(c=='7') printf("%d",111); else if(c=='8') printf("%d",1000); else if(c=='9') printf("%d",1001); else if(c=='A') printf("%d",1010); else if(c=='B') printf("%d",1011); else if(c=='C') printf("%d",1100); else if(c=='D') printf("%d",1101); else if(c=='E') printf("%d",1110); else if(c=='F') printf("%d",1111); } main() { int i,j,l; char x[81]; printf("输入16进制的数(用大写字母表示A、B、C、D、E、F),数字长度不超过一行\n"); while(scanf("%s",&x)!=EOF) { printf("输出转换成的2进制数\n"); i=0; l=strlen(x); if(x[i]=='0') i++; first(x[i]); for(j=i+1;j<l;j++) { judge(x[j]); if(j==l-1) printf("\n"); } printf("输入16进制的数\n"); } } 。
    。

2018-02-11

153 0
    /*思想:一般16进制化成2进制,每个16进制数化成2进制后先写成4个数字, 每4个4个并起来后再把前面的0去掉 (比如16进制数12A,先把1化成0001,2化成0010,A化成1010,合起来是000100101010,去掉前面的0后就是100101010,就是12A的2进制数)*/ #include #include void judge(char c) { if(c=='0') printf("%d%d%d%d",0,0,0,0); else if(c=='1') printf("%d%d%d%d",0,0,0,1); else if(c=='2') printf("%d%d%d",0,0,10); else if(c=='3') printf("%d%d%d",0,0,11); else if(c=='4') printf("%d%d",0,100); else if(c=='5') printf("%d%d",0,101); else if(c=='6') printf("%d%d",0,110); else if(c=='7') printf("%d%d",0,111); else if(c=='8') printf("%d",1000); else if(c=='9') printf("%d",1001); else if(c=='A') printf("%d",1010); else if(c=='B') printf("%d",1011); else if(c=='C') printf("%d",1100); else if(c=='D') printf("%d",1101); else if(c=='E') printf("%d",1110); else if(c=='F') printf("%d",1111); } void first(char c)/*第一个16进制数转化为2进制*/ { if(c=='1') printf("%d",1); else if(c=='2') printf("%d",10); else if(c=='3') printf("%d",11); else if(c=='4') printf("%d",100); else if(c=='5') printf("%d",101); else if(c=='6') printf("%d",110); else if(c=='7') printf("%d",111); else if(c=='8') printf("%d",1000); else if(c=='9') printf("%d",1001); else if(c=='A') printf("%d",1010); else if(c=='B') printf("%d",1011); else if(c=='C') printf("%d",1100); else if(c=='D') printf("%d",1101); else if(c=='E') printf("%d",1110); else if(c=='F') printf("%d",1111); } main() { int i,j,l; char x[81]; printf("输入16进制的数(用大写字母表示A、B、C、D、E、F),数字长度不超过一行\n"); while(scanf("%s",&x)!=EOF) { printf("输出转换成的2进制数\n"); i=0; l=strlen(x); if(x[i]=='0') i++; first(x[i]); for(j=i+1;j<l;j++) { judge(x[j]); if(j==l-1) printf("\n"); } printf("输入16进制的数\n"); } } 。
    。

2018-02-11

139 0
scanf用%X作参数读入十六进制, itoa参数里设置2进制输出成字符串, 打印出来就好了

2018-02-11

124 0
先把16进制转变成十进制,把十进制变成二进制

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
C/C++
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
C/C++
VB
数据库
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
C/C++
C/C++
举报
举报原因(必选):
取消确定举报