蓝桥杯 字母数!!

本文介绍了数制转换的基础知识,包括十进制转二进制、八进制、十六进制的原理和具体实现,以及如何进行R进制转换为十进制。通过举例和算法演示了转换过程,如10010110B=150D,26Q=22D,23daH=9178D。

题目

题目https://www.lanqiao.cn/problems/2406/learning/?page=1&first_category_id=1&sort=students_count&second_category_id=3&tags=2023

 思路

基础知识:进制之间的转换

十进制:都是以0-9这9个数字组成。

二进制:由0和1两个数字组成。

八进制:由0-7数字组成

十六进制:由0-9和A-F组成,英文字母A,B,C,D,E,F分别表示数字10~15.

1、十进制转R进制:

(1)十进制转二进制的原理:十进制数除以2,余数为权位上的数,得到商继续除以2,指导商为0终止,然后反向取余数。

具体实现:

例如(67)10  (1000011)2

将67除以2得商33,余数1。将商(33)作为第二次的被除数一次类推,直到商为0.

 (2)十进制转八、十六进制的原理:跟十转二原理一样,十进制数除以8/16.余数为权位上的数,得到商继续除以8/16,直到商为0终止,然后反向取余数。

具体实现:

例758(十进制) 1366(八进制)     951(十进制)→   3B7(十六进制) 

步骤跟十进制转二进制一样。

 

2、R进制转十进制 

方法:把R进制数按权展开、相加即得十进制数。

 

例题: 1001 0110B = ______ D

如下图所示,答案为150D

例题: 26Q = ______ D

如下图所示,答案为22D

例题: 23daH = ______ D

如下图所示,答案为9178D

 答案

def check(n):
    while n:
        if n % 16 <= 9:
            return False
        else:
            n = n // 16
    return True
    
num = 2022
while True:
    if check(num):
        print(num)
        break
    num = num + 1

2730

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值