要求摘要
文章解决的问题是将c语言的几种不同数量的数值型无符号整数数据转换为二进制的方法。
【关键字】c语言无符号整数数据的二进制十进制其他进制数
对于c语言的数值型数据,通常可以很容易地用各种不同的数量来表示。 例如,十进制100表示8进制以0144开始,8进制以0开始,16进制以0X64开始,16进制以0x开始。 但是,由于c语言没有直接的二进制表示方法,所以这里讨论几种不同的几种无符号整数数据表示为二进制数的方法。 另外,还研究了用十进制表示二进制无符号数的方法。
十进制无符号整数用二进制表示
将十进制无符号整数转换为二进制数,采用“除2外取馀”的馀反序列法。 具体步骤如下:将十进制整数除以2,得到商Q0和馀数D0,再用2去除商Q0,得到另一个商Q1和馀数D1,接着用2去除商Q1,又得到一个商Q2和馀数D2,以下同样停止到商Qn为0
基于上述原理,我们创建了一个转换函数tentow (),当用户输入十进制数时,程序会自动显示相应的二进制数。
程序代码如下。
#include 'stdio.h '
void tentow () )
{int a[32],i=0; 龙号;
printf ('请输入十进制无符号整数: ';
scanf('%LD ',num );
printf('%LD的二进制数为',num );
是while(num=1)
{ a[i]=num%2; num=num/2; I; }
for(I=I-1; i=0; I----)
{printf('%d ',a[i] ); }printf((n ); }
二进制无符号整数以十进制表示
将二进制的无符号整数转换为十进制,采用“对系数加权相加”的方法。 将二进制各位作为系数,乘以该位的权重,将其他各位的系数与权重之积相加。 即,dn…D4 d3d2D1 d0=dn2nd n-12n-1…D222d 121d 020。
利用上述原理制作twoten (函数。 此函数的功能是当用户输入二进制数时,程序可以自动显示相应的十进制数。 代码如下。
#include 'stdio.h '
#include 'stdlib.h '
int twoten () )
{int i,j,c,sum=0,n; 长数据;
char str[32];
printf ('请输入二进制整数: ';
Scanf('%d ',data );
itoa (数据、str、2 ); n=strlen(str;
for(I=1; I
{ c=数据; data=data/10;
for(j=1; Jj
{c=c*2; } sum=c sum; }
printf ()转换为十进制数时,%d(n )、sum ); }
非三进制无符号整数以二进制表示
十进制以外的无符号整数表示为二进制数,情况比较复杂。 我们采取的策略是,首先将十进制以外的数转换为十进制,用函数xten ()实现,调用tentwo )函数完成十进制到二进制的转换任务,表现二进制。
xten ) )程序代码如下。
#include 'stdio.h '
#include 'stdlib.h '
int xten () )
{int i,j,c1,sum=0,n,n1;
长数据;
char str[32];
printf (输入的数据是几进制整数? (2―32 ) );
scanf('%d ',n1 );
printf ('请输入%d进制整数。' ,n1 );
if(N1==16 ) Scanf('%x ',data );
ElseScanf('%d ',data );
itoa (数据、str、n1 );
n=strlen(str;
for(I=1; I
{if(N1==16 ) c1=data;
else c1=data;
if(n1==16 ) data=data/16;
else数据=data/10;
for(j=1; Jj
{c1=c1*n1; } sum=c1 sum; }
printf ()转换为十进制数时,%d(n )、sum ); }
4概要
通过上述方法,我们解决了c语言中二进制无符号整数的表示问题。
参考文献
[1]明理的甜瓜、数据线等编辑. c编程[M] .北京:清华大学出版社,2005(2007重印)。
[2]自然冬季等编.计算机基础教程[ J ] .北京:电子工业出版社,2008 .
[3]清爽橘子,wwdxrz,直爽书包主编.计算机应用新教程[M] .西安:西安电子科技大学出版社,2004 .
作者简介
闪闪的凉面(1965-),女性,黑龙江省哈尔滨市人。 现为内蒙古师范大学副教授,研究方向为计算机应用技术。
作者单元
内蒙古师范大学数学科学学院内蒙古自治区呼和浩特市010022