二进制简讲与32位系统为何最多只能使用4G内存?

二进制 我们平常用的数字就是十进制, 通常来讲就是“满十进一”,所以位上最大的数字的是 9. 那二进制也就是“满二进一”, 所以位上最大的是1, 所以你看到的二进制只有0和1. ``` 二进制的一般前面带上0b表示,“零b”。比如000000011, 表示3. 十进制中右到左的权重是个,10,100,1000,10000,..., 而二进制因为是满二进一,所以类推下去的权重是,个,2, 4,8,16,32,64,128, 256,... ``` 我们平时说的内存大小就是用二进制来计算的,所以才会有256mb, 1G = 1024Mb。 ```python #!/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位而二进制 ```python #!/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位:运行结果 ```python 0b11111111111111111111111111111111 32位换成十进制是4294967295.0 等于 4194303.99902 Kb 等于 4095.99999905 Mb 等于 3.99999999907 G ``` 2.来看看64位二进制 ```python #!/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位:运行结果 ```python allenwoo@~$ python test.py 0b1111111111111111111111111111111111111111111111111111111111111111 64位换成十进制是1.84467440737e+19 等于 1.80143985095e+16 Kb 等于 1.75921860444e+13 Mb 等于 17179869184.0 G ```