📜  数制分类(1)

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

数制分类

数制是一种用于表示数字的记数系统,不同的数制基数不同,进位方式也不同,常见于计算机底层的存储和计算。

常见的数制有:

  1. 二进制(base-2):由0和1组成,每一位最大值为1,下一位进1算作进位,用来表示计算机中的开关状态。
  2. 八进制(base-8):由0、1、2、3、4、5、6、7共8个数字组成,每一位最大值为7,下一位进8算作进位。
  3. 十进制(base-10):由0、1、2、3、4、5、6、7、8、9共10个数字组成,每一位最大值为9,下一位进10算作进位,用来表示得到十个单位时的数量。
  4. 十六进制(base-16):由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个数字组成,每一位最大值为15,下一位进16算作进位,常用于计算机内存地址和颜色值等。
二进制

二进制是计算机底层常用的一种数制,因为计算机内部所有的运算、逻辑操作都是基于二进制的。二进制中每一位称为一个比特(bit),可以用0或1来表示。例如,二进制数1101表示1+4+8=13。

# 将十进制数转二进制
def decimal_to_binary(n):
    if n == 0:
        return '0'
    else:
        binary = ''
        while n > 0:
            binary = str(n % 2) + binary
            n = n // 2
        return binary

print(decimal_to_binary(13))    # 1101
八进制

八进制是一种较少使用的数制,但在某些领域仍然有用途。八进制中每一位的基数为8,用0-7表示,例如,八进制数653表示3+5×8+6×64=427。

# 将十进制数转八进制
def decimal_to_octal(n):
    if n == 0:
        return '0'
    else:
        octal = ''
        while n > 0:
            octal = str(n % 8) + octal
            n = n // 8
        return octal

print(decimal_to_octal(427))    # 653
十进制

十进制是我们最为熟悉的一种数制,它是基于10的记数系统,包含了0-9这10个数字。

# 将二进制数转十进制
def binary_to_decimal(binary):
    decimal = 0
    for i in range(len(binary)):
        decimal += int(binary[i]) * 2 ** (len(binary) - i - 1)
    return decimal

print(binary_to_decimal('1101'))    # 13
十六进制

十六进制常用于计算机领域,它是基于16的记数系统,包含了0-9和A-F这16个数字。

# 将十进制数转十六进制
def decimal_to_hexadecimal(n):
    if n == 0:
        return '0'
    else:
        hexadecimal = ''
        while n > 0:
            remainder = n % 16
            if remainder < 10:
                hexadecimal = str(remainder) + hexadecimal
            else:
                hexadecimal = chr(remainder - 10 + ord('A')) + hexadecimal
            n = n // 16
        return hexadecimal

print(decimal_to_hexadecimal(427))    # 1AB

以上是数制分类的详细介绍,我们可以根据实际需求选择不同的数制来进行计算和存储。