进制

前言

计算机所涉及到的进制类型有以下几种:

  1. 二进制(base-2):计算机中最常用的进制,由0和1组成。计算机内部使用二进制存储和处理数据。
  2. 八进制(base-8):由0-7组成,每个八进制位相当于二进制位的3个,常用于Unix/Linux系统中的文件权限设置。
  3. 十进制(base-10):由0-9组成,是我们日常生活中使用的进制,计算机中也会使用十进制进行数值计算。
  4. 十六进制(base-16):由0-9和A-F(或a-f)组成,每个十六进制位相当于二进制位的4个,常用于表示内存地址和颜色值等。

除了上述四种进制类型,还有一些较少使用的进制类型,比如三进制、四进制、五进制等。但是在计算机中,使用的进制类型主要是二进制和十六进制。

PS:应该重点掌握二进制和十六进制

8421口诀

8421口诀是一种常用的二进制编码权值表示方法,它用来表示一个二进制数中每一位所代表的权值。这个口诀是指:

每一位的权值分别为:8、4、2、1。从高位到低位依次对应这四个数字。以一个8位二进制数为例,从左至右依次为第1位到第8位,对应的权值分别为:128、64、32、16、8、4、2、1。

具体来说,每一位的权值都是前一位权值的一半。也就是说,第一位的权值是2的7次方(2的指数从0开始计数),第二位的权值是2的6次方,第三位的权值是2的5次方,以此类推,直到最后一位的权值是2的0次方,即1。

以一个四位二进制数为例,这个口诀的应用如下:

假设一个四位二进制数的值为1010,按照8421口诀可以得到它的权值分别为8、0、2、0,因此它的十进制表示就是10。

在数字电路的设计、计算机科学以及数字信号处理等领域,8421口诀被广泛应用,可以帮助人们更快速、更准确地理解和计算二进制数的权值。

二进制

逢二进一

二进制是一种基于2个数字(0和1)的数字系统,也称为base-2。它是计算机内部处理和存储数据的基础。在计算机中,所有的数字、文字、图像和声音都是以二进制的形式存储和处理的。

在二进制中,每个数字位表示的是2的n次方,其中n表示这个数字位从右向左的位数,从0开始。比如,一个8位的二进制数可以表示256种不同的数字组合,因为2的8次方等于256。从右向左第一位是2的0次方,第二位是2的1次方,第三位是2的2次方,以此类推。

例如,二进制数1101,它的每一位表示的是2的n次方,从右往左依次是2的0次方、2的1次方、2的2次方、2的3次方,所以它表示的是13(1x2^0 + 0x2^1 + 1x2^2 + 1x2^3 = 13)。

在计算机内部,二进制数字是通过电子开关(或称为二极管)的开和关状态来表示的。开关打开表示1,关闭表示0。这些开关可以组合在一起,形成复杂的电路,用于存储和处理数据。

二进制的转换也很容易。例如,将二进制数1101转换为十进制数,只需要按照上面的公式计算即可:1x2^0 + 0x2^1 + 1x2^2 + 1x2^3 = 13。同样地,将十进制数13转换为二进制数,可以将13不断除以2,然后将余数记录下来,直到商为0。最后将余数倒序排列,就得到了二进制数1101。

二进制在计算机科学中具有重要的地位,因为计算机中的所有数据和指令都是以二进制的形式进行传输和处理的。因此,对于从事计算机编程和计算机科学的人员来说,掌握二进制是非常基本和必要的技能。

八进制

逢八进一

八进制是一种基于8个数字(0、1、2、3、4、5、6、7)的数字系统,也称为base-8。它类似于二进制和十六进制,是计算机中处理数据的另一种方式。

在八进制中,每个数字位表示的是8的n次方,其中n表示这个数字位从右向左的位数,从0开始。比如,一个三位的八进制数可以表示512种不同的数字组合,因为8的3次方等于512。从右向左第一位是8的0次方,第二位是8的1次方,第三位是8的2次方,以此类推。

例如,八进制数173,它的每一位表示的是8的n次方,从右往左依次是8的0次方、8的1次方、8的2次方,所以它表示的是123(3x8^0 + 7x8^1 + 1x8^2 = 123)。

在八进制中,逢八进一是一种重要的运算。当一个位上的数值达到8时,就需要向高位进位,即将该位上的数值归零,同时将进位后的数值加到高一位上。

例如,将八进制数776和546相加,得到的结果是1432。在最低位相加时,6+6=14(即逢八进一),所以这一位上的值为4,同时将进位的值1加到次一位上。接着,7+4+5=16(再次逢八进一),所以次一位上的值为6,同时将进位的值1加到更高位上。以此类推,直到所有的位数都相加完成。

在计算机内部,八进制通常不是被直接使用的数字系统。相反,八进制通常被用作二进制数的一种紧凑表示方法。由于八进制每个数字位表示的是三个二进制数字位,因此,八进制可以将一个二进制数中的三个数字位压缩为一个数字位,从而减少了存储和传输数据的大小。

十进制

逢十进一

十进制是最常见的数字系统,也称为base-10,是指每个数位的权值都是10的幂,从右到左依次为个位、十位、百位等等,权值依次增大。在十进制中,每个数位上的数值为0-9,通过将这些数值组合起来,可以表示任何实数,包括整数、分数和无理数等。

例如,数字6387,可以被解读为:

  • 6×1000(即6×10的3次方)表示六千
  • 3×100(即3×10的2次方)表示三百
  • 8×10(即8×10的1次方)表示八十
  • 7×1(即7×10的0次方)表示七

将它们加起来得到6387。换句话说,十进制中的每个数字位表示的是相应的权值,该权值与该数字位上的数字相乘,然后将它们相加得到最终的值。

十进制是人们最常用的数字系统,因为它直观易懂,方便计算。在计算机科学中,由于计算机本质上是使用二进制数字系统的,因此在计算机内部使用十进制数字通常比较复杂。不过,人们通常会将计算机内部的二进制数字转换成十进制数字以便于理解和显示,这也是很多计算机程序和操作系统中十进制计算的基础。

十六进制

逢十六进一

十六进制是一种基于16个数字(0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)的数字系统,也称为base-16。在计算机科学中,十六进制通常被用来表示二进制数的一种紧凑表示方法。

在十六进制中,每个数字位表示的是16的n次方,其中n表示这个数字位从右向左的位数,从0开始。从右向左第一位是16的0次方,第二位是16的1次方,第三位是16的2次方,以此类推。

例如,十六进制数3A7F,它的每一位表示的是16的n次方,从右往左依次是16的0次方、16的1次方、16的2次方、16的3次方,所以它表示的是14975(15x16^0 + 7x16^1 + 10x16^2 + 3x16^3 = 14975)。

在十六进制中,由于使用了A、B、C、D、E、F这些字母来表示10、11、12、13、14、15这些数字,因此,数字与字母的组合表示的数字系统也变得更加灵活。例如,十六进制数2AFB,它的每一位表示的是16的n次方,从右往左依次是16的0次方、16的1次方、16的2次方、16的3次方,所以它表示的是10939(11x16^0 + 15x16^1 + 10x16^2 + 2x16^3 = 10939)。

在计算机内部,十六进制常常被用来表示二进制数的一种紧凑表示方法,因为十六进制可以将一个二进制数中的四个数字位压缩为一个数字位,从而减少了存储和传输数据的大小。同时,由于十六进制的基数是2的4次方,因此它可以方便地与二进制相互转换。

0xFF为什么对应十进制为255

在十六进制数系统中,每个数字的取值范围是0到F,其中A~F表示10到15。因此,0xFF的最高位是F,其对应的十进制值是15,而最低位是F,其对应的十进制值也是15。将这两个十进制值相加,即15+15=30,就得到了0xFF的十进制值,即255。

怎么算的,详细描述一下

在十六进制数系统中,每个数字的取值范围是0到F。其中,0到9对应十进制数0到9,而A到F对应十进制数10到15。因此,在0xFF中,最高位的F对应十进制数15,而最低位的F也对应十进制数15。那么,0xFF的十进制值如何计算呢?

首先,需要理解十六进制数的位权概念。在十进制数系统中,一个数字的每个位上的数字都有一个位权,这个位权是10的幂。例如,对于数字237,7的位权是10^0=1,3的位权是10^1=10,2的位权是10^2=100。在十六进制数系统中,位权的计算方式也是类似的,只不过是16的幂而已。

那么,0xFF的位权是多少呢?从右向左数,最低位的位权是16^0=1,次低位的位权是16^1=16,依次类推,最高位的位权是16^2=256。现在可以把每一位上的数字和它对应的位权相乘,然后将它们相加,就可以得到0xFF的十进制值了:

0xFF = (15 x 16^1) + (15 x 16^0) = (15 x 16) + (15 x 1) = 240 + 15 = 255

因此,0xFF的十进制值为255。

什么是幂,详细解释一下

在数学中,幂是一种表示一个数被自身乘以多少次的运算。幂通常用一个底数和一个指数来表示。底数是被乘的数,指数是表示乘积中底数重复的次数。

例如,2的3次幂表示为2³,意思是将2自乘3次。具体计算方法是2³ = 2 x 2 x 2 = 8。同样地,4的2次幂表示为4²,意思是将4自乘2次。计算方法为4² = 4 x 4 = 16。

幂的计算可以通过重复相乘来实现。例如,3的5次幂可以通过以下方式计算:3⁵ = 3 x 3 x 3 x 3 x 3 = 243。

幂的运算规律包括:

  • 任何数的0次幂都等于1,即a^0 = 1。
  • 任何数的1次幂都等于它本身,即a^1 = a。
  • 乘方的指数相加相当于底数的乘积,即a^m × a^n = a^(m+n)。
  • 乘方的底数相同,指数相减相当于分数的除法,即a^m ÷ a^n = a^(m-n)。
  • 乘方的指数相乘相当于底数的幂次方,即(a^m)^n = a^(m×n)。

幂的概念在数学和计算机科学中都有广泛的应用,例如在指数函数、对数函数、数据压缩、密码学和图像处理等领域中都有重要的作用。

笔记

十进制的10,请转换为八进制和十六进制,并说明原因

十进制数10转换为八进制和十六进制的结果分别为:

  • 八进制:12
  • 十六进制:A

这是因为在八进制中,每一位的权值是2的3次幂,即从右往左分别是1、8、64、512、…,而10在8进制中表示为12,即1×8¹+2×8⁰=10。

在十六进制中,每一位的权值是2的4次幂,即从右往左分别是1、16、256、4096、…,而10在十六进制中表示为A,即10的十六进制表示为A。

不是0xa和0o12吗

您是正确的!非常抱歉我之前的回答有误。

十进制数10转换为八进制和十六进制的结果分别为:

  • 八进制:0o12
  • 十六进制:0xA

在Python等编程语言中,通常使用0o表示八进制数,使用0x表示十六进制数,因此10的八进制表示为0o12,十六进制表示为0xA。