
正文
二进制函数c语言代码注释 c语言二进制运算符
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
求c语言16进制转2进制的代码 要有注释不然看不懂 谢谢
#include "stdio.h"
int main()
{
char h[30],b[1024];
int d,i,k,n;
//以字符串形式输入十六进制数
printf("输入一个十六进制数:");
scanf("%s",h);
//逐个十六进制位转换
i=0;
n=0;
do
{
//将各位(字符型)十六进制数码转为整数
if(h[i]='0' h[i]='9')
d=h[i]-'0';
else if(h[i]='A' h[i]='F')
d=h[i]-'A'+10;
else
{
printf("输入格式有错误!只对有效位转化!");
return 0;
}
//十六进制转二进制,从最高位开始,按位权8,4,2,1,计算其对应的二进制数码存入变量数组b
k=8; //初始位权为8;
while(k=1)
{
if(d=k) //根据位权可知,该位的数码为1
{
b[n]='1'; //将该位写入二进制数字符串
d-=k; //减去已求出的数码为1的位权,即剩下部分
n+=1; //二进制数码的已求位数后移1位
}
else //根据位权可知,该位的数码为0
{
if(n!=0) //去除含0的起始位
{
b[n]='0';//将该位写入二进制数字符串
n+=1; //二进制数码的已求位数后移1位
}
}
k=k/2; //向右移1位后的位权;
}
b[n]=','; //每位十六进制数码对应的二进制数间用","隔开,如果不需分隔,请删除本行
n+=1; //如果不需分隔,请同时删除本行
i+=1; //下一十六进制数码位置
}while(h[i]!='\0'); //字符串结束标志,用于判断十六进制数是否读完
b[n]='\0'; //字符串结束标志
printf("%s",b); //打印出二进制数字符串
}
相关问答
Q1: 帮忙讲解一下 这个二进制整数转十进制的C语言 写注释就好
这个小程序把二进制数当做字符数组输入进来,所以说char型的0对应的ascii码是48,1是49,这就是为什么要把a[i]-48,可以把字符型的0和1转换成int型。strlen函数是返回字符串长度的,这样就知道你的二进制数有多少位了。后面的循环就是给二进制的每一位加权然后求和没什么特别的东西。
Q2: 求十进制转换二进制C语言代码
求十进制转换二进制C语言代码代码如下二进制函数c语言代码注释:
#includestdio.h
#define NR(sizeof(int)*8) //二进制位的个数
voiddeciToBin(intnum);//十进制转换为二进制函数声明
/*主函数*/
intmain(void)
{
intnum;
fprintf(stdout,"请输入一个正整数二进制函数c语言代码注释:");
/*获取并检查用户输入*/
while(1)
{
if(fscanf(stdin,"%d",num)!=1)
{
fprintf(stderr,"输入错误二进制函数c语言代码注释!请重新输入:");
while(getchar()!='\n');//去掉多余的非法字符
continue;
}
elseif(num0) //输入的数不能为负数
{
fprintf(stderr,"请输入错误!请输入正整数:");
continue;
}
else
break;
}
fprintf(stdout,"对应二进制为:");
#if1/*方法一:不使用递归*/
charbitArr[NR];
inti=-1;
/*算法:栈的数学模型*/
do{
i+=1;
bitArr[i]=num%2;
num/=2;
}while(num!=0);
/*逆序打印*/
for(i;i=0;i--)
{
fprintf(stdout,"%d",bitArr[i]);
}
fputc('\n',stdout);
#else/*方法二:使用递归*/
if(num==0)
{
fprintf(stdout,"0\n");
}
else
{
deciToBin(num); //调用第归函数
fputc('\n',stdout);
}
#endif
return0;
}
/*
*@函数名:deciToBin
*@函数功能:实现十进制转换为二进制
*@参数:需要转换的十进制整数
*/
voiddeciToBin(intnum)
{
/*第归结束条件*/
if(num==0)
{
return;
}
/*第归调用*/
deciToBin(num/2);
/*逆序打印*/
fprintf(stdout,"%d",num%2);
}
扩展资料:
使用C语言编程实现任意进制数(2-16进制)转换为其二进制函数c语言代码注释他任意进制数(2-16进制)方法:
#includestdio.h
#includestring.h
#includestdlib.h
intTenNum(chara[],intB);
voidNumchange(intm,intB);
intTenNum(chara[],intB)
{
intlen,i,num;
intsum=0;
len=strlen(a);
for(i=0;ilen;i++)
{
if(a[i]='0'a[i]='9')
num=a[i]-'0';
elseif(a[i]='A'a[i]='F')
num=a[i]-'A'+10;
sum=sum*B+num;
}
returnsum;
}
voidNumchange(intm,intB)
{
intn;
if(m)
{
Numchange(m/B,B);
n=m%B;
if(n10)
printf("%d",n);
else
printf("%c",n+55);
}
}
intmain()
{
intB,b;
chara[20];
printf("请输入待转换数的进制(2-16):");
do{
scanf_s("%d",B);
}while(B2B16);
printf("请输入待转换数:");
getchar();
gets_s(a);
intm=TenNum(a,B);
printf("请输入需要转成几进制数(2-16):");
do{
scanf_s("%d",b);
}while(B2B16);
printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);
Numchange(m,b);
printf("\n");
system("pause");
return0;
}
Q3: C语言怎么定义一个二进制数
C语言中没有 “二进制数”这种类型二进制函数c语言代码注释,所以没办法直接定义二进制函数c语言代码注释;但可以直接定义16进制数。
例二进制函数c语言代码注释:
int main(){
int a;
scanf("%p",a);//16进制数输入%p是输入一个十六进制二进制函数c语言代码注释的数scanf("%llx",a);也可以输入十六进制并且比较正规
printf("%d",a);//十进制输出%d是输出一个十进制的数
printf("0x%x",a);//16进制输出printf("%llX\n",a);也可输出一个十六进制数如果红色部分大写X则输出十六进制为大写字母否则小写x输出为小写字母
}
扩展资料
C语言中定义整型数据的十六进制数:
unsigned int hex_val = 0x123;
//定义二进制函数c语言代码注释了一个整型变量并赋以初始值为一个十六进制常量。
if (scanf("%x", hex_val) != EOF)
{
printf("它的八、十进制分别=%o、%d\n", hex_val, hex_val);
}
Q4: 大家都知道C语言中的/* */注释,这种注释有什么致命的问题?
/*……*/,这种注释是C语言程序中对一大段连续的程序段进行注释的标记符,在规范的C程序中也常常用来标示版权、著作者、调试运行信息、函数输入输出变量等,但都是利用其注释的作用。另外,很多程序员善于利用它的注释作用将某特定的程序段注释掉(不编译),来对程序进行调试。对单独或者小段的程序段加以注解时使用“//”更快捷方便。
注释,形象的说就像给程序蒙上一层隐身衣,使程序编译器看不到它,但我们程序员可以看见。在程序编译成为机器可识别的二进制代码时,是不会对其内容进行操作的,被注释的内容不会被编译。
使用/**/来进行注释的问题是显而易见的,因为它需要一个 /* 和一个 */ 一一对应,不允许嵌套和包含(如果无意间形成了包含,只有最外层的符号产生作用),类似于{ },而后者在很多代码编辑软件中是可以检测到是否配对的,也可以显示出其明显的嵌套关系。但是注释符号不会被检测出来,它们是否一一对应不得而知,因而是否有包含、遗漏、错误等等也都难以发现。如果某个程序段中因为程序员的调试过程中偶然注释失误,可能让程序段多出来一些或者少了一些程序段,从而导致未知的错误。
推荐一本经典的书《C语言陷阱和缺陷》,在百度上都有PDF的可看。很多问题都可以在里面找到答案。
一个字一个字敲上去的,希望能对你有所帮助。
关于二进制函数c语言代码注释和c语言二进制运算符的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





