10进制数转换为负进制数(Python实现)

最近加Python群的时候看到一个验证——群号用负7进制如何表示,我看了一愣,忽然想起来进制确实也可以是负的只不过我们的工作学习中很少涉及,故此写了个程序计算负进制数的转换,值得一提的是python语法的设计上与传统的C/Java/C++不同,

整除的时候所求得的商  C/C++/Java 是向零取整(负数向上、正数向下取整),Python 是下取整,详细代码见如下:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import math


# 将数num从base_conver进制转换为十进制(包括负进制)
def num_base_conversion(num, base_conver):
    temp = []
    if num == 0:
        temp.append(0)
    else:
        while num != 0:
            k = int(num % base_conver)
            num = math.floor(num / base_conver)
            if k < 0:
                k = k - base_conver
                num = num + 1
            temp.append(k)
    return temp


if __name__ == '__main__':
    num = 195132894
    base_conver = -7
    temp = num_base_conversion(num, base_conver)
    print(temp)
    count = 0
    result = ''
    for i in range(len(temp)):
        count = count + int(temp[i] * math.pow(base_conver, i))
        result = result + str(temp[len(temp) - i - 1])
    print("验证成功" if count == num else "验证失败")
    print("转换为十进制数为: %s" % result)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值