📜  计算机基础-编号系统(1)

📅  最后修改于: 2023-12-03 15:28:02.846000             🧑  作者: Mango

计算机基础-编号系统

计算机基础中,编号系统是一个非常重要的概念,它涉及到计算机的数据存储、转换以及运算等方面。本文将从以下几个方面介绍编号系统的相关内容:

  1. 十进制、二进制、八进制、十六进制的基本概念和转换方法
  2. 进制之间的转换
  3. 计算机中的数据表示方式
十进制、二进制、八进制、十六进制

在计算机中,常用的编号系统有四种:十进制、二进制、八进制、十六进制。其中,十进制是我们常见的计数方式,二进制、八进制和十六进制则在计算机中得到广泛应用。

十进制

十进制是我们平时使用的计数方式,它的底数为10,使用10个数字 0~9 表示。例如我们常说的“123”就是一个十进制数。

二进制

二进制是计算机中最基本的编号系统。它的底数为2,使用两个数字 0 和 1 表示。例如“1010”就是一个二进制数,它可以表示为:

1010 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 8 + 0 + 2 + 0 = 10
八进制

八进制的底数为8,使用8个数字 0~7 表示。在C语言中,我们可以用数值前加“0”表示一个八进制数。例如“012”表示一个八进制数,它可以表示为:

012 = 1 * 8^1 + 2 * 8^0 = 10
十六进制

十六进制的底数为16,使用16个数字 0~9 和字母 A~F 表示。在C语言中,我们可以用数值前加“0x”或“0X”表示一个十六进制数。例如“0x1A”表示一个十六进制数,它可以表示为:

0x1A = 1 * 16^1 + 10 * 16^0 = 26
进制之间的转换

在计算机中,我们常常需要对不同进制之间的数进行转换。这里介绍一些基本的转换方法。

十进制转二进制

十进制转二进制的方法是不断地将十进制数除以2,直到商为0为止,然后将每次的余数从下往上依次排列起来。例如,将十进制数 10 转为二进制:

10 / 2 = 5 余 0
5 / 2 = 2 余 1
2 / 2 = 1 余 0
1 / 2 = 0 余 1

10的二进制表示为:1010
十进制转八进制和十六进制

十进制转八进制和十六进制的方法类似于十进制转二进制,只是对应的底数不同而已。

八进制

十进制转八进制的方法是不断地将十进制数除以8,直到商为0为止,然后将每次的余数从下往上依次排列起来。例如,将十进制数 10 转为八进制:

10 / 8 = 1 余 2
1 / 8 = 0 余 1

10的八进制表示为:12

十六进制

十进制转十六进制的方法是不断地将十进制数除以16,直到商为0为止,然后将每次的余数从下往上依次排列起来,A~F分别对应10~15。例如,将十进制数 26 转为十六进制:

26 / 16 = 1 余 A
1 / 16 = 0 余 1

26的十六进制表示为:1A
二进制、八进制、十六进制转十进制

二进制、八进制、十六进制转十进制的方法是将每一位的数值乘以对应位数的权值,最后将所有位的乘积相加即可。

以二进制为例,例如二进制数1010:

1010 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 8 + 2 = 10
进制之间的互转

进制之间的互转可以通过先将原数转换为十进制,再将十进制转换为目标进制实现。例如,将十六进制数0x1A转为二进制:

0x1A = 1 * 16^1 + 10 * 16^0 = 26(十进制)
26转二进制为:11010
计算机中的数据表示方式

计算机中常用的数据表示方式有三种:原码、反码和补码。

原码

原码是一种数值与它的编码一一对应的整数表示方法。最高位是符号位,0表示正数,1表示负数。例如,8位的二进制数 +5 的原码为 0000 0101,-5 的原码为 1000 0101。

原码的缺点在于加减法比较麻烦,同时也存在正零和负零两个不同的数。

反码

反码是将原码中所有位取反(即0变为1,1变为0)得到的编码。

反码的优点在于减法可以直接使用加法实现,它只需要将减数取反后与被减数相加。例如,8位的二进制数 +5 的反码为 0000 0101,-5 的反码为 1111 1010。

反码的缺点在于存在正零和负零两个不同的数,而且也没有唯一的表示方法。

补码

补码是将反码中所有位加1得到的编码。补码是计算机中最常用的一种数据表示方式。

补码的优点在于加减法和逻辑运算可以统一使用,同时也不存在正零和负零的问题。例如,8位的二进制数 +5 的补码为 0000 0101,-5 的补码为 1111 1011。

总结

本文介绍了计算机中常用的编号系统:十进制、二进制、八进制和十六进制,以及它们之间的转换方法。同时,还介绍了计算机中的数据表示方式:原码、反码和补码。了解这些基础知识对程序员来说是非常重要的,它有助于他们更深入地理解计算机中的数据存储和运算方式。