当前位置: 首页 > article >正文

详解进制转换

在编程和数字计算中,进制转换是一项非常重要的技能。不同进制之间的转换可以帮助我们更好地理解数字的本质和计算机的工作原理。

目录

一、进制的基本概念

1.十进制

2.二进制

3.八进制

4.十六进制

二、十进制转其他进制

1.十进制转二进制

 2.十进制转八进制

3.十进制转十六进制 

三、其他进制转十进制 

1.二进制转十进制

2.八进制转十进制 

3.十六进制转十进制 

四、二进制、八进制、十六进制之间的转换 

1.二进制转八进制

2.二进制转十六进制 

3.八进制转二进制 

4.十六进制转二进制 

一、进制的基本概念

1.十进制

我们日常生活中最常用的进制就是十进制。十进制由 0、1、2、3、4、5、6、7、8、9 十个数字组成,逢十进一。

2.二进制

计算机中最常用的进制是二进制。二进制由 0 和 1 两个数字组成,逢二进一。

3.八进制

八进制由 0、1、2、3、4、5、6、7 八个数字组成,逢八进一。

4.十六进制

十六进制由 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 十六个数字组成,逢十六进一。

二、十进制转其他进制

1.十进制转二进制

方法:除 2 取余,逆序排列。

def decimal_to_binary(decimal):
    if decimal == 0:
        return '0'
    binary = ''
    while decimal > 0:
        binary = str(decimal % 2) + binary
        decimal //= 2
    return binary

 2.十进制转八进制

方法:除 8 取余,逆序排列。

def decimal_to_octal(decimal):
    if decimal == 0:
        return '0'
    octal = ''
    while decimal > 0:
        octal = str(decimal % 8) + octal
        decimal //= 8
    return octal

3.十进制转十六进制 

方法:除 16 取余,逆序排列,将余数大于 9 的用字母 A-F 表示。

def decimal_to_hexadecimal(decimal):
    if decimal == 0:
        return '0'
    hexadecimal = ''
    while decimal > 0:
        remainder = decimal % 16
        if remainder < 10:
            hexadecimal = str(remainder) + hexadecimal
        else:
            hexadecimal = chr(remainder - 10 + ord('A')) + hexadecimal
        decimal //= 16
    return hexadecimal

三、其他进制转十进制 

1.二进制转十进制

方法:位权展开法。

def binary_to_decimal(binary):
    decimal = 0
    power = 0
    for digit in reversed(binary):
        decimal += int(digit) * (2 ** power)
        power += 1
    return decimal

2.八进制转十进制 

方法:位权展开法。

def octal_to_decimal(octal):
    decimal = 0
    power = 0
    for digit in reversed(octal):
        decimal += int(digit) * (8 ** power)
        power += 1
    return decimal

3.十六进制转十进制 

方法:位权展开法。

def hexadecimal_to_decimal(hexadecimal):
    decimal = 0
    power = 0
    for digit in reversed(hexadecimal):
        if digit.isdigit():
            decimal += int(digit) * (16 ** power)
        else:
            decimal += (ord(digit.upper()) - ord('A') + 10) * (16 ** power)
        power += 1
    return decimal

四、二进制、八进制、十六进制之间的转换 

1.二进制转八进制

方法:从低位开始,每三位二进制数转换为一位八进制数。

def binary_to_octal(binary):
    if len(binary) % 3!= 0:
        binary = '0' * (3 - len(binary) % 3) + binary
    octal = ''
    for i in range(0, len(binary), 3):
        octal += str(int(binary[i:i + 3], 2))
    return octal

2.二进制转十六进制 

 方法:从低位开始,每四位二进制数转换为一位十六进制数。

def binary_to_hexadecimal(binary):
    if len(binary) % 4!= 0:
        binary = '0' * (4 - len(binary) % 4) + binary
    hexadecimal = ''
    for i in range(0, len(binary), 4):
        hexadecimal += hex(int(binary[i:i + 4], 2))[2:]
    return hexadecimal

3.八进制转二进制 

方法:一位八进制数转换为三位二进制数。

def octal_to_binary(octal):
    binary = ''
    for digit in octal:
        binary += bin(int(digit))[2:].zfill(3)
    return binary

4.十六进制转二进制 

方法:一位十六进制数转换为四位二进制数。

def hexadecimal_to_binary(hexadecimal):
    binary = ''
    for digit in hexadecimal:
        binary += bin(int(digit, 16))[2:].zfill(4)
    return binary

***新人博主创作不易,希望大家多多点赞关注呀~ 


http://www.kler.cn/a/375287.html

相关文章:

  • 118.【C语言】数据结构之排序(堆排序和冒泡排序)
  • Java旅程(五)Spring 框架与微服务架构 了解 JVM 内部原理和调优
  • 【Golang 面试题】每日 3 题(六)
  • sentinel限流+其他
  • 【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
  • RAG实战:构建基于本地大模型的智能问答系统
  • windows@命令行中获取环境变量取值不展开取值(原值)
  • 大数据新视界 -- 大数据大厂都在用的数据目录管理秘籍大揭秘,附海量代码和案例
  • 青少年编程与数学 02-003 Go语言网络编程 03课题、网络编程协议
  • 代码随想录训练营Day09 | 150. 逆波兰表达式求值 - 239. 滑动窗口最大值 - 347.前 K 个高频元素
  • 从服务运营的阶段,进入到了精细化管理和智慧化运营的阶段的明厨亮早年开源了
  • ubuntu知识点滴积累
  • AI-基本概念-向量、矩阵、张量
  • 后台管理系统的通用权限解决方案(七)SpringBoot整合SpringEvent实现操作日志记录(基于注解和切面实现)
  • 学习虚幻C++开发日志——基础案例(持续更新中)
  • SpringSecurity框架(入门)
  • PostgreSQL的奥秘:表结构、TOAST与大对象
  • 网络一些相关术语
  • axios 如何取消请求
  • 移植 AWTK 到 纯血鸿蒙(HarmonyOS NEXT)系统 (0) - 序
  • IP 欺骗以及其他常见网络攻击手段(附hping3的实际应用)
  • Qml-Gif的显示
  • 13 实战:使用Python和Pygame实现视频运动估计播放器
  • 二维legendre多项式
  • Oracle 第10章:触发器
  • 关于校验码的算法