最近加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)