二进制简讲与32位系统为何最多只能使用4G内存
2017-04-24 本文已影响53人
HiWoo
人人可以学Python.png
二进制
我们平常用的数字就是十进制, 通常来讲就是“满十进一”,所以位上最大的数字的是 9.
那二进制也就是“满二进一”, 所以位上最大的是1, 所以你看到的二进制只有0和1.
二进制的一般前面带上0b表示,“零b”。比如000000011, 表示3.
十进制中右到左的权重是个,10,100,1000,10000,...,
而二进制因为是满二进一,所以类推下去的权重是,个,2, 4,8,16,32,64,128, 256,...
我们平时说的内存大小就是用二进制来计算的,所以才会有256mb, 1G = 1024Mb。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print "0b00000001 换成十进制是 {}".format(0b00000001)
print "0b00000010 换成十进制是 {}".format(0b00000010)
print "0b00000100 换成十进制是 {}".format(0b00000100)
print "0b00000101 换成十进制是{}".format(0b00000101)
allenwoo@~$ python test.py
0b00000001 换成十进制是 1
0b00000010 换成十进制是 2
0b00000100 换成十进制是 4
0b00000101 换成十进制是 5
32位系统与64位系统
简单通俗的说,计算机系统我们平常用的有32位, 64位。 其实这个位也就是32位二进制,也就是说32位的系统最多识别32的二进制。
因为32位二进制换成十进制也就是2^32次方 4294967295,大概4G,所以为什么说4G以上内存的电脑装32位的系统就是浪费内存.
而64位系统就能支持非常大的内存, 2^64次方 1.84467440737e+19, 大概17179869184.0 G。
也可以如下直接转成十进制,在换算单位看看。#####
1.32位而二进制
#!/usr/bin/python
# -*- coding: UTF-8 -*-
num_b = 0b11111111111111111111111111111111
num_b = float(num_b)
print "0b11111111111111111111111111111111\n " \
"32位换成十进制是{}".format(num_b)
# 字节大小是b,所以我们转换一下单位
print "等于 {} Kb".format(num_b/1024)
print "等于 {} Mb".format(num_b/1024/1024)
print "等于 {} G".format(num_b/1024/1024/1024)
python test.py
32位:运行结果
0b11111111111111111111111111111111
32位换成十进制是4294967295.0
等于 4194303.99902 Kb
等于 4095.99999905 Mb
等于 3.99999999907 G
2.来看看64位二进制
#!/usr/bin/python
# -*- coding: UTF-8 -*-
num_b = 0b1111111111111111111111111111111111111111111111111111111111111111
num_b = float(num_b)
print "0b1111111111111111111111111111111111111111111111111111111111111111\n \
64位换成十进制是{}".format(num_b)
# 字节大小是b,所以我们转换一下单位
print "等于 {} Kb".format(num_b/1024)
print "等于 {} Mb".format(num_b/1024/1024)
print "等于 {} G".format(num_b/1024/1024/1024)
64位:运行结果
allenwoo@~$ python test.py
0b1111111111111111111111111111111111111111111111111111111111111111
64位换成十进制是1.84467440737e+19
等于 1.80143985095e+16 Kb
等于 1.75921860444e+13 Mb
等于 17179869184.0 G