【笔记】进制转换

news2024/11/14 15:21:49

文章目录

    • 一、任意进制转十进制
      • 1、整数转化成十进制
        • (1)二进制转十进制
        • (2)八进制转十进制
      • 2、小数转化成十进制
        • (1)二进制转十进制
        • (2)八进制转十进制
      • 3、代码
      • 1、整数转化成十进制
      • 2、小数转化成十进制
    • 二、十进制转任意进制
      • 1、十进制整数转化成其他进制
      • 2、十进制小数转化成其他进制
    • 例题
      • 1、十进制整数转化成其他进制
      • 2、十进制小数转化成其他进制
    • 例题

一、任意进制转十进制

基数:表示基本数字符号的个数。
比如十进制就是0-9,基数有10个;十六进制就是0-9、A-F,基数有16个。

权:每一位表示的数值。
比如十进制的8769里8代表8* 1000,7代表7* 100,6代表6* 10,9代表9* 1。这里的千位数代表1000,百位数代表100,十位数代表10,个位数代表1。

权=基数^x,x表示位数(从右往左数,从0开始)

还是以十进制为例子,千位数的权=基数10^3=1000

十进制数=各位数字*权的和

按权展开法: 十进制数 = ∑ i 第 i 位数字 ∗ 第 i 位数字的权 = ∑ i 第 i 位数字 ∗ 基 数 i 十进制数=∑_i第i位数字*第i位数字的权=∑_i第i位数字*基数^i 十进制数=ii位数字i位数字的权=ii位数字i

1、整数转化成十进制

(1)二进制转十进制

1010 1 2 = 1 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 = 16 + 0 + 4 + 0 + 1 = 21 10101_2=1\times2^4+0\times2^3+1\times2^2+0\times2^1+1\times2^0=16+0+4+0+1=21 101012=1×24+0×23+1×22+0×21+1×20=16+0+4+0+1=21

(2)八进制转十进制

257 3 8 = 2 × 8 3 + 5 × 8 2 + 7 × 8 1 + 3 × 8 0 = 1403 2573_8=2\times8^3+5\times8^2+7\times8^1+3\times8^0=1403 25738=2×83+5×82+7×81+3×80=1403

2、小数转化成十进制

(1)二进制转十进制

1101.100 1 2 = 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 − 1 + 0 × 2 − 2 + 0 × 2 − 3 + 1 × 2 − 4 = 8 + 4 + 0 + 1 + 1 / 2 + 0 + 0 + 1 / 16 = 13.5625 1101.1001_2=1\times2^3+1\times2^2+0\times2^1+1\times2^0+1\times2^{-1}+0\times2^{-2}+0\times2^{-3}+1\times2^{-4}=8+4+0+1+1/2+0+0+1/16=13.5625 1101.10012=1×23+1×22+0×21+1×20+1×21+0×22+0×23+1×24=8+4+0+1+1/2+0+0+1/16=13.5625

(2)八进制转十进制

573.1 2 8 = 5 × 8 2 + 7 × 8 1 + 3 × 8 0 + 1 × 8 − 1 + 2 × 8 − 2 = 320 + 56 + 3 + 1 / 8 + 1 / 32 = 379.15625 573.12_8=5\times8^2+7\times8^1+3\times8^0+1\times8^{-1}+2\times8^{-2}=320+56+3+1/8+1/32=379.15625 573.128=5×82+7×81+3×80+1×81+2×82=320+56+3+1/8+1/32=379.15625

3、代码

1、整数转化成十进制

写法1

def k_to_ten(k,x):
    ans=0
    for i in list(x):
        ans=ans*k+int(i)
    return ans
print(k_to_ten(8,"2573"))
# 1403
print(k_to_ten(2,"10101"))
# 21

写法2

int_to_char="0123456789ABCDEF"
char_to_int={}
for i in range(16):
    char_to_int[int_to_char[i]]=i

def k_to_ten(k,x):
    ans=0
    for i in x:
        ii=char_to_int[i]
        ans=ans*k+ii
    return ans
print(k_to_ten(8,"2573"))

写法3

int_to_char="0123456789ABCDEF"
char_to_int={}
for i in range(16):
    char_to_int[int_to_char[i]]=i

def k_to_ten(k,x):
    ans=0
    length=len(x)
    for index,char in enumerate(list(x)):
        ii=char_to_int[char]
        ans+=ii*k**(length-index-1)
    return ans
print(k_to_ten(2,"10101"))

2、小数转化成十进制

int_to_char="0123456789ABCDEF"
char_to_int={}
for i in range(16):
    char_to_int[int_to_char[i]]=i
def k_to_ten(k,x):
    # 把x分成正数和小数
    x=x.split('.')
    ans=0
    for index,char in enumerate(list(x[0])):
        length=len(x[0])
        ii=char_to_int[char]
        ans+=ii*k**(length-index-1)
    for index,char in enumerate(list(x[1])):
        ii=char_to_int[char]
        ans+=ii*k**(-(index+1))
    return ans
print(k_to_ten(8,"573.12"))
# 379.15625

二、十进制转任意进制

除k取余法:十进制数字不断除以k求余数,然后逆序输出。

之前已经知道了 十进制数 = ∑ i 第 i 位数字 ∗ 第 i 位数字的权 = ∑ i 第 i 位数字 ∗ 基 数 i 十进制数=∑_i第i位数字*第i位数字的权=∑_i第i位数字*基数^i 十进制数=ii位数字i位数字的权=ii位数字i,那么除以基数k就可以以低位到高位的顺序得到基数。

以把十进制的99转化成二进制为例子:
99/2=49……1
49/2=24……1
24/2=12……0
12/2=6……0
6/2=3……0
3/2=1……1
1/2=0……1
所以 9 9 10 = 0110001 1 2 所以99_{10}=0110 0011_2 所以9910=011000112

1、十进制整数转化成其他进制

还是以是十进制数99为例:

9 9 10 = 0110001 1 2 99_{10}=0110 0011_2 9910=011000112

99/2=49……1
49/2=24……1
24/2=12……0
12/2=6……0
6/2=3……0
3/2=1……1
1/2=0……1
99=1*2**6+1*2**5+0*2**4+0*2**3+0*2**2+1*2**1+1*2**0

9 9 10 = 14 3 8 99_{10}=143_8 9910=1438

99/8=12……3
12/8=1……4
1/8=0……1
99=1*8**2+4*8**1+3*8**0

9 9 10 = 6 3 16 99_{10}=63_{16} 9910=6316

99/16=6……3
6/16……6
99=6*16**1+6*16**0

2、十进制小数转化成其他进制

除k取整法:十进制小数转k进制,乘以k求整数,然后顺序输出。

0.62 5 10 = 0.10 1 2 0.625_{10}=0.101_2 0.62510=0.1012

在这里插入图片描述

例题

1、十进制整数转化成其他进制

input: 十进制int
output: k进制整数

int_to_char="0123456789"

def ten_to_k(k,x):
    ans=[]
    if x==0:
        ans.append(0)
        return
    while x:
        ans.append(x%k)
        x=x//k
    ans.reverse()
    print(ans)
    for i in ans:
        print(int_to_char[i],end="")
    return
ten_to_k(8,99)
# 143

input: 十进制int
output: k进制列表

int_to_char="0123456789"

def ten_to_k(k,x):
    ans=[]
    if x==0:
        ans.append(0)
        return ans
    while x:
        ans.append(x%k)
        x=x//k
    ans.reverse()
    return ans
print(ten_to_k(8,99))
# [1,4,3]

2、十进制小数转化成其他进制

int_to_char="0123456789"
def ten_to_k(k,x):
    x=str(x)
    # 把x分成正数和小数
    x=x.split('.')
    x=[int(x[0]),int(x[1])/10**len(x[1])]
    ans=[[],[]]
    if x[0]==0:
        ans[0].append(0)
    while x[0]:
        ans[0].append(x[0]%k)
        x[0]=x[0]//k
    ans[0].reverse()
    while x[1]:
        # 依次乘k
        zs=x[1]*k
        # 取整数部分
        ans[1].append(int(zs//1))
        x[1]=zs-zs//1
    all=[''.join([int_to_char[i] for i in ans[0]]),'.']+[''.join([int_to_char[i] for i in ans[1]])]
    return all
print(ten_to_k(2,0.625))
# ['0', '.', '101']

例题

lanqiao1230 进制转换
lanqiao2095 九进制转十进制
lanqiao2489 进制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Vue 3 和 TypeScript 实现带打字效果的仿 AI 分析展示组件

在这篇博客中,我将分享如何用 Vue 3 和 TypeScript 实现一个带打字效果的 AI 分析展示组件。该组件具有如下功能: 动态打字效果:模拟打字机逐步显示内容。自动滚动:内容超出容器高度时自动滚动到最新位置。 1. 组件实现需求 我…

【读点论文】Text Recognition in the Wild: A Survey 非常纯粹的OCR研究,专业细致,脉络清晰

Text Recognition in the Wild: A Survey 文本的历史可以追溯到几千年前。文本所携带的丰富而精确的语义信息在广泛的基于视觉的应用场景中非常重要。因此,自然场景中的文本识别一直是计算机视觉和模式识别中一个活跃的研究领域。近年来,随着深度学习的…

基础 Web 开发

1. 构建项目&#xff1a; 2.添加依赖 <dependencies> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupI…

低代码门户技术:构建高效应用的全新方式

什么是低代码门户技术&#xff1f; 低代码门户技术是一种利用低代码平台构建企业门户网站或应用的技术。门户通常是企业内部和外部用户访问信息和应用的集中平台。低代码门户技术通过图形化界面和预置组件&#xff0c;允许用户快速搭建和定制这些门户平台&#xff0c;而无需深…

数据结构入门学习(全是干货)——树(中)

数据结构入门学习&#xff08;全是干货&#xff09;——树&#xff08;中&#xff09; 1 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09; 1.1 二叉搜索树及查找 二叉搜索树&#xff08;Binary Search Tree, BST&#xff09; 是一种特殊的二叉树…

四、JVM原理-4.1、JVM介绍

4.1、JVM介绍 4.1.1、如何理解Java虚拟机&#xff0c;它的结构是如何设计的&#xff1f; 答&#xff1a; Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;是Java语言编写的程序在运行时的执行环境。它是Java的核心组成部分&#xff0c;负责解释和执行…

开源项目 face parsing 人脸区域分割 人像区域分割 人脸分割 人像区域分割 BiSeNet

开源项目 - face parsing 人脸区域分割 人像区域分割 人脸分割 人像区域分割 BiSeNet 人像分割 开源项目地址&#xff1a;https://gitcode.net/EricLee/faceparsing 包括开源数据集 和 预训练模型 咨询合作 DataBall 项目&#xff0c;欢迎加以下微信。 助力快速掌握数据集的信…

HarmonyOS 速记

目录 装饰器Entry(入口)Component(组件)State(状态)Prop(属性)Preview(预览)PreviewerInspector 结构体structbuild自定义组件自定义 Custom 组件 容器Row(行) & Column(列)RelativeContainer(相对布局容器)marginpaddingSwiper(轮播图)Grid(网格容器)List(列表) 组件Image…

python函数一:函数的概念、函数定义与调用、函数的参数、函数的返回值、说明文档以及函数的嵌套调用

文章目录 1. 函数介绍1.1 函数的概念1.2 函数定义与调用1.2 函数的参数1.3 函数的返回值1.4 说明文档 2. 函数的嵌套调用2.1 嵌套调用及执行流程2.2 嵌套调用的应用 1. 函数介绍 1.1 函数的概念 什么是函数&#xff1f; 函数:是一个被命名的、独立的、完成特定功能的代码段&am…

使用c#制作一个小型桌面程序

封装dll 首先使用visual stdio 创建Dll新项目,然后属性管理器导入自己的工程属性表&#xff08;如果没有可以参考visual stdio 如何配置opencv等其他环境&#xff09; 创建完成后 系统会自动生成一些文件&#xff0c;其中 pch.cpp 先不要修改&#xff0c;pch.h中先导入自己需…

Python画笔案例-053 绘制海龟螺旋图

1、绘制海龟螺旋图 通过 python 的turtle 库绘制 海龟螺旋图&#xff0c;如下图&#xff1a; 2、实现代码 绘制海龟螺旋图&#xff0c;以下为实现代码&#xff1a; """海龟螺旋图.py""" import turtle from random import randintscreen turtl…

引入第三方字体图标icon

引入第三方字体图标icon 1.登录阿里巴巴icon库 2.点开ui提供的字体图标并下载 3.解压download 将font_4008950_i6fkbudh8ld文件放置项目中例如&#xff1a;放在assets文件夹下 4.然后再main.js中引入 import ‘/assets/font_4008950_i6fkbudh8ld/iconfont.css’; 5.项目中应…

Rsync未授权访问漏洞复现及彻底修复

一、什么是 Rsync&#xff1f; Rsync 是一种广泛使用的文件传输工具&#xff0c;它允许系统管理员和用户通过局域网&#xff08;LAN&#xff09;或广域网&#xff08;WAN&#xff09;在计算机之间同步文件和目录。Rsync 支持通过本地或远程 shell 访问&#xff0c;也可以作为守…

STM32——输入捕获

输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器&#xff0c;除了TIM6、TIM7&#xff0c;其他的定时器都有输入捕获的功能。应用场景是编码器。 测量频率 当捕获通道TIx 上出现上升沿时&#xff0c;发生第一次捕获&#xff0c;计数器CNT 的值会被锁存到捕获寄存…

Java中的红黑树(如果想知道Java中有关红黑树的知识点,那么只看这一篇就足够了!)

前言&#xff1a;红黑树作为一种自平衡的二叉搜索树&#xff0c;在计算机科学领域具有极其重要的地位。它通过颜色约束和旋转操作保持树的高度平衡&#xff0c;从而保证了查找、插入、删除等操作的高效性。红黑树广泛应用于操作系统的调度算法、数据库索引、Java集合框架等领域…

「全球大模型竞技场」更新:DeepSeek-V2.5全面领跑国内模型

原文&#xff1a;深度求索 DeepSeek 月初&#xff0c;我们发布并开源了 DeepSeek-V2.5&#xff0c;一个融合通用与代码能力的全新模型。 近日&#xff0c;LMSYS 组织的全球大模型竞技场&#xff08;ChatBotArena&#xff09;更新结果发布&#xff0c;DeepSeek-V2.5 排名位列国…

额定剩余动作电流继电器有什么功能?

ASJ系列剩余电流动作继电器可与低压断路器或低压接触器等组装成组合式的剩余电流动作保护器&#xff0c;为现代电力系统设计&#xff0c;旨在提高电力系统的安全性和可靠性。其技术和多功能特性使其成为电力管理和监测的理想选择。主要适用于交流50Hz&#xff0c;额定电压为400…

iPhone 16系列:熟悉的味道,全新的体验

来看看iPhone 16和Plus这两个新成员&#xff0c;实话说&#xff0c;它们和之前曝光的样子几乎完全一致。下面我们就一起来细数一下这次的几大变化吧。 外观设计&#xff1a;焕然一新 首先&#xff0c;最显眼的变化就是后置镜头模组的布局调整为了垂直排列。这一改变使得整个背…

29912分页

拆分地址&#xff1a; 003FDFB0 0000 0000 0011 1111 1101 1111 1011 000000 0*8 00 0000 001 -> 1*8 1 1111 1101 -> 1FD*8 1111 1011 0000 -> FB0PROCESS 883ef7c8 SessionId: 1 Cid: 09b0 Peb: 7ffdf000 ParentCid: 0588DirBase: bf2484a0 ObjectTable: 98…

将多个pdf合并成一个文件?这几种合并方法很好用!

如何将多个pdf合并成一个文件&#xff1f;面对日益增长的PDF文档&#xff0c;我们时常陷入管理困境&#xff0c;这不仅仅关乎于时间与精力的巨大消耗&#xff0c;因为这些孤立的PDF文件如同散落的拼图碎片&#xff0c;让关键信息的搜寻变得如同大海捞针&#xff0c;严重拖慢了工…