数的进制
莱布尼茨(W. Leibniz)(1646~1716)是他那个时代最伟大的思想家之一,他十分欣赏二进位制.用拉普拉斯(Laplace)的话来说:“莱布尼茨在他的二进位算术中看到了宇宙创始的原象.他想象1表示上帝,而0表示虚无,上帝从虚无中创造出所有实物,恰如在他的数学系统中用1和0表示了所有的数.”
-
我们用多少个不同的符号就表示多少进制。二进制是用0和1两个符号来表示的。表示更大的数字要逢二进一。
-
数字在计算机中表现的方式常见的有四种:十进制,二进制,八进制,十六进制
十进制 Decimal 简写DEC |
二进制 Binary 简写BIN |
八进制 Octal 简写OCT |
十六进制 Hexadecimal 简写HEX |
|
---|---|---|---|---|
基数 | 0~9 | 0~1 | 0~7 | 0~9,a/A~f/F |
进位 | 逢十进一 | 逢二进一 | 逢八进一 | 逢十六进一 |
加法计算 | 1 + 9 = 10 | 100 + 1110 = 10010 | 1 + 7 = 10 | 1 + A =10 |
位权n(0,1,2...n) | 10的n次方 | 2的n次方 | 8的n次方 | 16的n次方 |
转十进制 | 2431 = 2*10^3 + 4*10^2 + 3*10^1 + 1*10^0 =2431 | 1010 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 =8 + 0 + 2 + 0 =10 | 2018 = 2*8^2 + 1*8^1 + 8*8^0 = 128 + 8 + 8 = 144 | 123 = 1*16^2 + 2*16^1 + 3*16^0 = 291 |
程序中的表示 | 直接写 | 0b1010 or 0B1010 | 0o2018 or 0O2018 | 0X123 or 0X123 |
# 都会输出十进制数字
print(291 + 1) # 292
print(0x123 + 1) # 292
进制转换
其它进制转十进制
-
手动转换:每一位上的数乘以位权
-
代码转换:直接用print函数打印
print(0o12, 0xaf, 0b1011)
十进制转其它进制
- 手动转换:辗转取余法
100不断除以2取余数倒序排列余数 得二进制数
100不断除以8取余数倒序排列余数 得八进制数
八进制,十六进制与二进制之间的互相转换
记忆法宝 8 4 2 1
八进制转二进制:将1位8进制数转换成3位的二进制 (任何的八进制基数都可以用三位的二进制数表示,因为八进制各位数字最大是7)
0o67 -> 0b 110 111 # 6= 0*8 + 4*1 + 2*1 + 1*1
0o624 -> 0b 110 010 100
十六进制进制转二进制:将1位16进制数转换成4位的二进制 (任何的十六进制基数都可以用四位的二进制数表示,因为十六进制各位数字最大为15----对应二进制可用1111表示)
0xaf -> 0b 1010 1111
二进制数转换成八进制
0b 11 010 111 011 -> 0o3273
二进制数转换成十六进制
0b 110 1011 1011 -> 0x6bb
用代码转换进制
- bin(数字) 将其他进制的数字转换成二进制
- oct(数字)将其他进制的数字转换成八进制
- hex(数字)将其他进制的数字转换成十六进制
print(bin(0o67))
print(oct(324))
print(hex(100))
网友评论