16进制转换成2进制
16进制转换成2进制
十六进制和二进制互转很简单 只要将对应的每一个十六进制数转换成二进制,拼接起来就行了 比如: $ABCD, A==>1010,B==>1011 C==>1100,D==>1101 拼接:1010 1011 1100 1101 这就是二进制结果 由于他们之间有对应关系,你完全可以使用查表的方式进行对应 即:建立十六进制数字和二进制数据之间的对应表,根据十六进制数查找对应的二进制,反过来依然; 楼上的方法是因为他不明白进制之间的关系,效率很低
/*思想:一般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
scanf用%X作参数读入十六进制, itoa参数里设置2进制输出成字符串, 打印出来就好了
先把16进制转变成十进制,把十进制变成二进制
/*思想:一般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
问:请教哈!!请教哈!!新年好!我嘛,是软件工程的学生,现在学C++,但是其他的一些...
答:新年好!首先,你必须了解计算机的组成和结构以及操作系统的运作原理,这是基础 如果你想学习开发多线程、WINDOWS应用、动态链接库、WINDOWS组件的话,建议...详情>>