c语言中十六进制可以直接和十进制运算吗,十进制与十六进制怎么理解?,C语言中十进制数和十六进制数能直接运算吗...

16进制 10进制

00 0

01 1

02 2

.. .

09 9

0A 10

0B 11

0C 12

0D 13

0E 14

0F 15

10 16

1F 31

20 32

将数字符号按序排列成数位,并遵照某种由低位到高位的进位 方式计数表示数值的方法,称作进位计数制。

1. 十进制

十进制计数制由 0、 1、 2、 3、 4、 5、 6、 7、 8、 9共 10个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满十就向高位进一,即 “逢十进一 ”。

如: 555.5可以表示成

555.5= 5×100+5×10+5×1+5×( 1/10)

一个任意的十进制数都可以表示成:

2. 八进制

八进制计数制由 0、 1、 2、 3、 4、 5、 6、 7共 8个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满八就向高位进一,即 “逢八进一 ”。

如:( 555.5) 8 可以表示成

( 555.5) 8 = 5×16+5×8+5×1+5×( 1/8)

一个任意的十进制数都可以表示成:

3. 二进制

二进制计数制由 0和 1共 2个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满二就向高位进一,即 “逢二进一 ”。

如:( 1011.1) 2 = 1×8+0×4+1×2+1×1+1×( 1/2)

一个任意的二进制数都可以表示成:

4. 其他进制

在日常生活和日常工作中还会使用其他进制数。如:十二进制数、十六进制数、百进制数和千进制数等。无论哪种进制数,表示的方法都是类似的。如:十六进制数由 0、 1、 2、 3、 4、 5、 6、 7、 8、 9、 A、 B、 C、 D、 E和 F共十六个符号组成, “逢十六进一 ”。不同的是用 A、 B、 C、 D、 E和 F分别表示 10、 11、 12、 13、 14和 15六个数字符号。

5. 基数与权

某进制计数制允许选用的基本数字符号的个数称为基数。一般而言, J进制数的基数为 J,可供选用的基本数字符号有 J个,分别为 0到 J- 1,每个数位计满 J就向高位进一,即 “逢 J进一 ”。

某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为 “位权 ”(简称 “权 ”)。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。

十进制数允许使用十个基本数字符号,所以基数为 10,每位数字符号代表的位数的大小是以 10为底,数字符号所处位置的序号为指数的整数次幂。

为了表达方便起见,常在数字后加一缩写字母后缀作为不同进制数的标识。各种进制数的后缀字母分别为:

B :二进制数。

Q :八进制数。

D :十进制数。

H :十六进制数。

对于十进制数通常不加后缀,也即十进制数后的字母 D 可省略。

( 1 )将二进制数转换成对应的十进制数

将二进制数转换成对应的十进制数的方法是“按权展开求和”:

利用二进制数按权展开的多项式之和的表达式,取基数为 2 ,逐项相加,其和就是对应的十进制数。

例 1 :将二进制数 1011.1 转换成对应的十进制

解: 1011.1B=1×2 3+0×2 2+1×2 1+1×2 0+1×2 -1

=8+0+2+1+0.5

=11.5D

例2:

( 2 )将十进制数转换成对应的二进制数

将十进制数转换为对应的二进制数的方法是:

对于整数部分,用被除数反复除以 2 ,除第一次外,每次除以 2 均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。

对于小数部分,采用连续乘以基数 2 ,并依次取出的整数部分,直至结果的小数部分为 0 为止。故该法称 “ 乘基取整法 ” 。

例:将十进制 117.625D 转换成二进制数

解:整数部分: “除以 2 取余,逆序输出”

小数部分 : “乘以 2 取整,顺序输出”

所以 117.625D = 1110101.101B

例2:

例3:

特别提示:将十进制数转换成其他进制数方法与次上述方法类似。

( 3 )将二进制数转换为对应的八进制数

由于 1 位八进制数对应 3 位二进制数,所以二进制数转换成八进制数时,只要以小数点为界,整数部分向左,小数部分向右每 3 位分成一组,各组用对应的 1 位八进制数字表示,即可得到对应的八进制数值。最左最右端分组不足 3 位时,可用 0 补足。

例:将 1101101.10101B 转换成对应的八进制数。

解:

所以, 1101101.10101B = 155.52Q 。

同理,用相反的方法可以将八进制数转换成对应的二进制数。

( 4 )将二进制数转为对应的十六进制数

由于 1 位十六进制数对应 4 位二进制数,所以二进制数转换为十六进制时,只要以小数点为界,整数部分向左,小数部分向右每 4 位分成一组,各组用对应的 1 位十六进制数字表示,即可得到对应的十六进制数值。两端的分组不足 4 位时,用 0 补足。

例:将 1101101.10101B 转换成对应的十六进制数

解:

所以 1101101.10101B = 6D.8AH 。

同理,用相反的方法可以将十六进制数转换成对应的二进制数。

例:将十六进制数 5DF.9 转换成二进制:

例:将二进制数 1100001.111 转换成十六进制:

至于其他的转换方法,如八进制到十进制,十六进制到十进制之间的转换,同样可用按权展开的多项式之和及整数部分用 “ 除基取整数 ” 来实现的。只不过此时基数分别为 8 和 16 。当然,更简单实用的方法是借用二进制数做桥梁,用 “ 八 —— 二 —— 十 ” 或 “ 十六 —— 二 —— 八 ” 的转换方法来实现

  • 0
    点赞
  • 1
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值