如何用c语言将8位二进制数字转换成一个十六进制的字符?如10110100转换为b4?

如题所述

#include <stdlib.h>
#include <math.h>

void BCH(char,char);

void main()
{
int i,flag=0;
char hex[2];
char binary[8];

while(!flag)
{
printf("请输入一个8位二进制数:");
scanf("%s",binary);
for(i=0;i<8;i++)
if(binary[i]!='1' && binary[i]!='0')
{
flag=0;
printf("你输入的不是二进制数,请重新输入\n\n");
break;
}
else
flag=1;
}
BCH(binary,hex);
printf("对应的十六进制数是:");
printf("%c",hex[0]);
printf("%c\n",hex[1]);

}

void BCH(char *binary,char *hex)
{
int hbit,lbit,i;
hbit=lbit=0;
for(i=3;i>=0;i--)
{
if(binary[3-i]=='0');
else
hbit+=(int)pow(2,i);
}
for(i=3;i>=0;i--)
{
if(binary[7-i]=='0');
else
lbit+=(int)pow(2,i);
}

switch(hbit)
{
case 10:
hex[0]='A';
break;
case 11:
hex[0]='B';
break;
case 12:
hex[0]='C';
break;
case 13:
hex[0]='D';
break;
case 14:
hex[0]='E';
break;
case 15:
hex[0]='F';
break;
default:
hex[0]=hbit+'0';
break;
}

switch(lbit)
{
case 10:
hex[1]='A';
break;
case 11:
hex[1]='B';
break;
case 12:
hex[1]='C';
break;
case 13:
hex[1]='D';
break;
case 14:
hex[1]='E';
break;
case 15:
hex[1]='F';
break;
default:
hex[1]=lbit+'0';
break;
}
}

运行调试过了,没问题的。有问题请继续指教。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-02
1011 0100
11(b) 4追问

同上

如何用c语言将8位二进制数字转换成一个十六进制的字符?如10110100转换...
void main(){ int i,flag=0;char hex[2];char binary[8];while(!flag){ printf("请输入一个8位二进制数:");scanf("%s",binary);for(i=0;i<8;i++)if(binary[i]!='1' && binary[i]!='0'){ flag=0;printf("你输入的不是二进制数,请重新输入\\n\\n");break;} else flag=...

8位机器码10110100'它是补码时'表示十进制的真值是?可不可以把算得过 ...
所以256D-10110100B = 76 D. 加个符号即可。 即位机器码10110100'它是补码时'表示十进制的真值是 -76.详细理论:C语言、补码.1.任何数值是以补码存放在内存中的.2.正数的补码和其原码相同. 补码 = 原码。3.负数的补码的两种求法:(假设8bit,即8位)(1).是将该数的绝对值的二进制形式,...

C程序设计【第一章:程序设计和C语言】
其他进制转换,例如:(方式一)二进制转换为八进制:二进制转换为十进制,十进制转换为八进制 (方式二)以例子来描述 例如:+7,-7 练习 :已知某数X的原码为10110100B,试求X的补码与反码 练习 :已知某数X的补码为11101110B,试求X的原码 练习: 求3和 4按位与的结果 练习: 求3和 4按...

C语言编程之二进制原码、反码和补码
两位十进制数,舍弃进位,就是减去一百。因此,+99、-100,当然就是-1 了。·八位二进制数:0000 0000 ~ 1111 1111。也就是十进制:0 ~ 255。如果出现进位:2^8 = 256。此时,+255 (1111 1111)、再舍弃进位,也就是-1 了。同理,+254 (1111 1110),也就是-2。。。以上这些正数...

什么是机内码,什么是国标码?
机内码:在计算机内表示汉字的代码是汉字机内码,汉字机内码由国标码演化而来,把表示国标码的两个字节(每个字节可转化为8位二进制数,不足8位前面补零)的最高位分别加“1”,就变成汉字机内码。技巧算法:(1) 区位码先转换成十六进制数表示 (2)(区位码的十六进制表示)+2020H=国标码;(...

C语言中的字符型变量没有赋值前为什么是-52?
因为没有赋值前。字符变量的值是CC.上面是16进制表示。16进制CC转换为二进制 11001100 计算机是用补码表示数据的。第1位是1.是符号位,它是负数。根据11001100求出原码就是先减一,然后 符号位不变,其他取反 得到 10110100,它正好是-52的原码。希望能帮助你!!!

区位码国标码机内码的转换?
编码方法是现将十进制表示的区码和位码转换为十六进制表示的区码和位码,再讲这个代码的高字节(第一个字节)和低字节(第二个字节)分别加上20H(100000B),就得到国标码。每个字节加20H的原因是为了避开ASCII码表的32个控制字符。如“啊”的区位码为1601,计算“啊”的国标码,首先将“啊”的区...

原码是怎么算
1、原码、反码和补码的表示方法 (1) 原码:在数值前直接加一符号位的表示法。 例如: 符号位 数值位 [+7]原= 0 0000111 B [-7]原= 1 0000111 B 注意:a. 数0的原码有两种形式: [+0]原=00000000B [-0]原=10000000B b. 8位二进制原码的表示范围:-127~+127 (2)...

计算机二进制01011010扩大两倍 怎么做过程
也可以将二进制01011010转换成十进制计算,01011010转化为十进制是90,90扩大2倍得到180,十进制180转化为二进制是就是10110100。二进制转换:首先了解一个概念,叫“权”。“权”就是进制的基底的n次幂。如二进制的权就是(2)^n了,十进制的权就是(10)^n,看到十进制就很自然的想到科学计算法...

汉字的机内码和国标码是什么关系?
机内码:在计算机内表示汉字的代码是汉字机内码,汉字机内码由国标码演化而来,把表示国标码的两个字节(每个字节可转化为8位二进制数,不足8位前面补零)的最高位分别加“1”,就变成汉字机内码。技巧算法:(1) 区位码先转换成十六进制数表示 (2)(区位码的十六进制表示)+2020H=国标码;(...

相似回答