2024-04-21
藏龙卧虎
00
请注意,本文编写于 214 天前,最后修改于 144 天前,其中某些信息可能已经过时。

目录

考点
进制概念
进制转换
举例说明
码制
浮点数二进制
转换过程

考点

在软考中,针对二进制、十六进制等内容的考题通常会涉及以下方面:

  • 基本概念和转换:考题可能会要求考生理解二进制、十六进制等不同进制的基本概念,包括其表示方法、转换规则等。考生可能需要进行二进制到十进制、十进制到二进制、二进制到十六进制、十六进制到二进制等基本转换。
  • 进制运算:考题可能会涉及到在不同进制下的加法、减法、乘法和除法运算。考生需要了解不同进制下的运算规则,并能够进行简单的计算。
  • 进制间转换应用:考题可能会给出特定的情境或问题,要求考生利用进制转换知识解决实际问题,如IP地址的子网划分、颜色代码的转换、数据存储和传输等方面。

关注公众号“月上老狗”,发送“软件设计师”,获取历年软件设计师软考真题。

image

进制概念

数字系统中,通常用字母 B 表示二进制(Binary),H 表示十六进制(Hexadecimal)。

在编程中,可能会看到表示二进制的前缀"0b"(如0b1010),而表示十六进制的前缀则是"0x"(如0x1A)。

在常见的进制表示中,除了十进制使用数字09表示外。

在八进制中,使用的数字是 07 ,因此不需要字母来表示。但在十六进制中,除了数字09外,还需要使用字母 AF 来表示十到十五这几个数值。

具体地,十六进制中使用的字母表示如下:

  • A 表示十进制的 10
  • B 表示十进制的 11
  • C 表示十进制的 12
  • D 表示十进制的 13
  • E 表示十进制的 14
  • F 表示十进制的 15

进制转换

进制转换是指将一个数从一种进制表示转换成另一种进制表示的过程。在计算机科学和数学中,最常见的进制是二进制、八进制、十进制和十六进制。进制转换通常涉及将数字从一种进制表示转换为另一种进制表示,但也可以涉及将字符或其他数据从一种进制编码转换为另一种。

举例说明

  • 二进制转换为十进制:

假设有一个二进制数1101,要将其转换为十进制。首先,写出二进制数的每一位所代表的权重,从右往左依次为1、2、4、8。然后,将每一位的值与其对应的权重相乘,并将结果相加。即:1×(2^0) + 0×(2^1) + 1×(2^2) + 1×(2^3) = 1 + 0 + 4 + 8 = 13。所以,二进制数1101转换为十进制数为13

  • 十进制转换为二进制:

假设有一个十进制数27,要将其转换为二进制。首先,确定最大的2的幂次方,使其不超过27,即2^4=1627减去16剩下11,所以第五位为1。接着,确定最大的2的幂次方,使其不超过11,即2^3=811减去8剩下3,所以第四位为1。然后,确定最大的2的幂次方,使其不超过3,即2^1=23减去2剩下1,所以第二位为1。最后,第一位自然是1。所以,27的二进制表示为11011

  • 十六进制转换为二进制:

假设有一个十六进制数2A3F,要将其转换为二进制。首先,将十六进制数中的每个数字分别转换为其四位二进制表示。即:2->0010, A->1010, 3->0011, F->1111。然后,将每个四位二进制数拼接起来即可得到结果:0010101000111111

码制

在计算机中,原码、反码和补码是用来表示有符号整数的三种不同的编码方式。它们之间有着密切的关系,特别是在进行负数表示时。

  • 原码:源码是最直观的一种表示方式,就是将一个数直接用二进制表示出来,最高位表示符号位,0表示正数,1表示负数。例如,十进制数3的源码是00000011,而十进制数-3的源码是10000011
  • 反码:反码是在源码的基础上,对于负数,除了符号位以外,其余位取反(0变1,1变0)。正数的反码与源码相同。例如,十进制数3的反码是00000011,而十进制数-3的反码是11111100
  • 补码:补码是在反码的基础上,对于负数,在反码的基础上加1。正数的补码与源码相同。例如,十进制数3的补码是00000011,而十进制数-3的补码是11111101

符号位是指在有符号数中用来表示正负的位,通常是最高位。在源码、反码和补码中,符号位都位于最高位,其余位用来表示数值部分。符号位为0表示正数,符号位为1表示负数。源码、反码和补码之间的关系如下:

  • 对于正数,源码、反码和补码是相同的。
  • 对于负数,反码是源码取反(符号位不变),补码是反码加1。

补码的使用主要是为了方便计算机进行加法运算,因为补码的加法规则与无符号数的加法规则相同,不需要额外的逻辑。在计算机中,几乎所有的运算都是基于补码进行的。

浮点数二进制

浮点数的二进制表示采用了一种称为“浮点数标准”的格式,通常是IEEE 754标准。

IEEE 754标准定义了两种类型的浮点数表示:单精度浮点数(32位)和双精度浮点数(64位),分别用于表示较小和较大的范围内的实数。

下面是单精度浮点数的二进制表示结构:

  • 1位符号位:表示正负号,0表示正数,1表示负数。
  • 8位指数位:用于表示指数部分,采用偏移表示法,即实际指数值加上一个偏移量。这8位指数位可以表示的指数范围通常为-126+127
  • 23位尾数位:用于表示尾数部分,尾数部分表示浮点数的有效数字。

双精度浮点数的二进制表示结构类似,但指数位为11位,尾数位为52位,符号位仍然占1位。

例如,要表示十进制数3.14的单精度浮点数:

  • 首先,将3.14转换为二进制,得到11.00100011110101110000101(省略了无限循环部分)。
  • 根据IEEE 754标准,将11.00100011110101110000101规格化,得到1.100100011110101110000101 × 2^1
  • 将指数部分加上偏移量(127),即1 + 127 = 128,转换为二进制为10000000
  • 将尾数部分取小数点后23位,即1001000111101011100001
  • 最后,将符号位、指数位和尾数位组合起来,得到单精度浮点数的二进制表示:0 10000000 1001000111101011100001

这就是单精度浮点数3.14的二进制表示。在实际的计算机中,浮点数的表示还会包含一些特殊值,如正无穷大、负无穷大、NaN(Not a Number)等,以处理一些特殊情况。

转换过程

  • 3.14如何转换为二进制表示?

要将十进制数3.14转换为二进制表示,可以使用乘2取整法:将小数部分乘以2,然后将结果的整数部分作为二进制数的一部分,然后将小数部分继续乘以2,重复这个过程直到小数部分为0或者达到所需的精度。

下面是将3.14转换为二进制的过程:首先,将整数部分和小数部分分离。3是整数部分,0.14是小数部分。

  • 整数部分的二进制表示为11(因为3除以2得到商1,余数1,然后1再除以2得到商0,余数1,所以反过来读就是11)。
  • 小数部分的二进制表示可以通过乘2取整法来进行转换:
    • 将小数部分0.14乘以2得到0.28,整数部分为0,所以第一位是0。
    • 将剩余的小数部分0.28乘以2得到0.56,整数部分为0,所以第二位是0。
    • 将剩余的小数部分0.56乘以2得到1.12,整数部分为1,所以第三位是1。
    • 将剩余的小数部分0.12乘以2得到0.24,整数部分为0,所以第四位是0。
    • 将剩余的小数部分0.24乘以2得到0.48,整数部分为0,所以第五位是0。
    • 将剩余的小数部分0.48乘以2得到0.96,整数部分为0,所以第六位是0。
    • 以此类推,直到小数部分为0或者达到所需的精度。

将得到的整数部分和小数部分组合起来,得到 3.14 的二进制表示。因此,3.14 的二进制表示大致是11.00100011110101110000...(省略了无限循环部分)。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!