注册 登录
每天一道算法题

第一章:计算最值,次最值

第二章:进制的转换

第三章:质数,水仙花,公约数

第四章:子序列问题

首页 > 每天一道算法题 > 第二章:进制的转换 > 2.5节:计算最大四位值

2.5节:计算最大四位值

薯条老师 2021-04-08 15:25:49 226517 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python小班办得很好,学员的平均就业薪资有11K。线下小班培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

2.5.1 问题说明

这里的最大四位是指十进制转换为二进制以后的以四个二进制位为一组的最大值。比如十进制23,其所对应的二进制为00010111,将该二进制从低位到高位按4个二进制位进行分组:

图片.png

那么最大的四位值即为0111,也就是十进制的7。

2.5.2 算法思路

比较容易想到的算法是将十进制转换为二进制,然后以4个二进制位为一组,将其转换为十进制,再与下一组进行比较。

十进制转为其它进制采用的是除基数取余再逆序排列的方法,比如转换为二进制,那么基数就是2,转换为十六进制,基数就是16。

今天介绍一个更简单的算法,因为一个十六进制位刚好对应四个二进制位,所以更好的思路是将十进制转换为十六进制,在转换的过程中直接比较每一个十六进制位的大小。

2.5.3 算法实现

# __author__ = 薯条老师
import random


def calc_max4b(n):
    """
    :param n: 十进制整数
    :return: 返回最大的四位值
    """
    
    base, max4b = 16, 0
    n = -n if n < 0 else n
    # 按除16取余,再逆序排列的算法来计算十进制的每一个十六进制位
    while n >= 1:
        h, n = n % base,  n // base
        if h > max4b:
            max4b = h
    return max4b
    
    
if __name__ == "__main__":
    number = random.randint(0,  10**4)
    print("{}的最大四位值是:{}".format(number, calc_max4b(number)))

2.5.4 最具实力的小班培训

来这里参加Python和Java小班培训的学员大部分都找到了很好的工作,平均月薪有11K,学得好的同学,拿到的会更高。由于是小班教学,所以薯条老师有精力把每位学员都教好。打算参加线下小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:




欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录