为了将整数转换为二进制、八进制或十六进制的文本串,可以分别使用bin() ,oct() 或hex() 函数:
x = 1234 bin(x) ‘0b10011010010’ oct(x) ‘0o2322’ hex(x) ‘0x4d2’
如果你不想输出0b , 0o 或者0x 的前缀的话,可以使用format() 函数
format(x, ‘b’) ‘10011010010’ format(x, ‘o’) ‘2322’ format(x, ‘x’) ‘4d2’
整数是有符号的,所以如果你在处理负数的话,输出结果会包含一个负号
x = -1234 format(x, ‘b’) ‘-10011010010’ format(x, ‘x’) ‘-4d2’
如果你想产生一个无符号值,你需要增加一个指示最大位长度的值。比如为了显示32 位的值,可以像下面这样写:
x = -1234 format(2**32 + x.'‘b’)‘11111111111111111111101100101110’
format(2**32 + x, ‘x’) ‘fffffb2e’
为了以不同的进制转换整数字符串,简单的使用带有进制的int() 函数即可
int(‘4d2’, 16) 1234 int(‘10011010010’, 2) 1234
练习:
#进制转换
x = int(input("请输入一个整数:"))
print("该整数的二进制表示为",bin(x),"八进制表示为",oct(x),"十六进制表示为",hex(x))
十进制转二进制 十进制整数转二进制
十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。
例题: 135D = ______ B **解析:**如下图所示,将135除以2,得余数,直到不能整除,然后再倒取。得到结果。
十进制小数转二进制
十进制小数转换成二进制小数采用 “乘2取整,顺序排列” 法。
具体做法是:
用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
例题: 0.68D = ______ B(精确到小数点后5位)
**解析:**如下图所示,0.68乘以2,取整,然后再将小数乘以2,取整,直到要求精度。得到结果:
十进制转八进制 思路和十进制转二进制一样,参考如下例题:
例题: 10.68D = ______ Q(精确到小数点后3位)
**解析:**如下图所示,整数部分除以8取余数,直到无法整除。小数部分0.68乘以8,取整,然后再将小数乘以8,取整。得到结果:
十进制转十六进制 思路和十进制转二进制一样,参考如下例题:
例题: 25.68D = ______ H(精确到小数点后3位)
**解析:**如下图所示,整数部分除以16取余数,直到无法整除。小数部分0.68乘以16,取整,然后再将小数乘以16,取整,直到达到题目要求精度。得到结果:19.ae1H.
**方法为:**把二进制数按权展开、相加即得十进制数。(具体用法如下图) 例题: 1001 0110B = ______ D
**解析:**如下图所示。得到结果:150D.
八进制转十进制 八进制转十进制的方法和二进制转十进制一样。
例题: 26Q = ______ D\n\n**解析:**如下图所示。得到结果:22D.
十六进制转十进制 例题: 23daH = ______ D **解析:**如下图所示。得到结果:9178D.
二进制转八进制 二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取成一位。
例题: 1010 0100B = ____Q
**解析:**计算过程如下图所示。得到结果:244Q.
二进制转十六进制 二进制转换成八进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。
例题: 1010 0100B = ____H
**解析:**计算过程如下图所示。得到结果:a4H