龙源期刊网
http://www.qikan.com.cn
C
语言中整型无符号二进制数的表示问题
作者:马红旭
来源:《电子技术与软件工程》
2015
年第
20
期
摘
要
文章解决的问题是
C
语言中几种不同数制的数值型无符号整型数据,转换成二进制数的方
法。
【关键词】
C
语言
无符号整型数据
二进制数
十进制数
其它进制数
对于
C
语言中的数值型数据,通常可以方便地表示成多种不同数制。比如十进制数
100
,
表示成八进制数为
0144
,八进制数以
0
开头,表示成十六进制数为
0x64
,十六进制数以
0X
开
头。然而
C
语言却没有直接的二进制表示办法,这里将讨论,把几种不同数制无符号整型数
据,表示成二进制数的方法。另外还讨论了把二进制无符号数表示成十进制的方法。
1
十进制无符号整数表示成二进制数
十进制无符号整数转换为二进制数,采用
“
除
2
取余
”
,余数逆序排列法。具体步骤是:用
2
整除十进制整数,可以得到一个商
Q0
和余数
D0
;再用
2
去除商
Q0
,又会得到一个商
Q1
和
余数
D1
,接着用
2
去除商
Q1
,又会得到一个商
Q2
和余数
D2
,依此类推,直到商
Qn
为
0
时
停止,然后把先得到的余数
D0
作为二进制数的低位有效位,后得到的余数
Dn
作为二进制数
的高位有效位,依次排列起来得到:
Dn…D4D3D2D1D0
,这个
Dn…D4D3D2D1D0
就是我们需
要的十进制整数转换为二进制数的结果。
根据上述原理,我们编写了一个转换函数
tentow
(),函数功能是:用户输入一个十进制
数,程序自动把它对应的二进制数显示出来。
程序代码如下:
#include "stdio.h"
void tentow
()
{int a[32]
,
i=0
;
long num
;
printf
(
"
请输入一个十进制无符号整数:
"
);
scanf
(
"%ld"
,
&num
);