电脑的存储方式:以二进制的方式存储。
内存:(运行空间,掉电清除)
磁盘:(永久持续化存储空间,除非坏了)
计算机中处理数据的单位:字节(Byte — B)
1B = 8b 【1字节=8位】
1K = 1024B
1M = 2^10KB
1G = 1024M
1T = 1024G
二进制:0b 标识
逢二进一
0 + 1 = 1
1 + 1 = 10
1 1 1
1 0 1
------
11 0 0
111 + 101 = 1100
110 + 1011 =10001
1001 + 1011 =10100
八进制:0o
0 1 2 3 4 5 6 7
逢八进一
1 + 6= 7
1 + 7 = 10
12 + 56 = 70
12
56
---
7 0
756 + 342 =1320
756
342
---
1320
521 + 1314 =2035
521
1314
-----
2035
十进制:0d【在python中若没有标明,默认使用十进制】
0 1 2 3 4 5 6 7 8 9
逢十进一
十六进制:0x
0 1 2 3 4 5 6 7 8 9 a b c d e f
逢十六进一
1 + f = 10
5 + d = 12
1f + 2d3 = 2f2
cf4 + 32d = 1021
2eb + 3ed = 6d8
十进制换算成二进制
倒除法,余数逆序
5--》101
12--》1100
9 --》1001
15 --》1111
21 ---》10101
二进制换算成十进制
当前的数字乘以2的位数次方,最后相加。【位数从0开始数】
位数从右往左数,从0开始 2^0 =1
1 0 1
1x2^2+0x2^1 +1x2^0= 5
1010 =10
11001=25
110110 =54
八进制转换二进制
一位转三位,高位不够补0
12 ---->001010
563 -->101110011
721 -->111010001
542-->101100010
二进制转换为八进制
三位一取:低位开始取,高位不够补0
001011100 ==>134
111 011 101 ==>735
101 101 001==>551
10 101 010 ==>252
十六进制转换二进制
一位转四位,位数不够高位补0
f --> 1111
d --> 1101
3fc ==>11 1111 1100
78a ==> 111 1000 1010
de5 ==>1101 1110 0101
二进制转换十六进制
四位一取,从低位开始取,高位不够补0
10 0111 ==>27
1011 0111 ==>b7
1110 1111 0111 ==>ef7
1 1011 1101 1110 ==>1bde
0110 1101 1011==>6db
#!/usr/bin/env python
#-- coding: utf-8 --
#-- author:HFZeng --
转二进制
“{0:b}”.format(x)
将x转为二进制
print("{0:b}".format(10))
print("{0:b}".format(0o10))
print("{0:b}".format(0x10))
1010
1000
10000
“{0:o}”.format(x)
将x转为八进制
print("{0:o}".format(0b10))
print("{0:o}".format(10))
print("{0:o}".format(0x10))
2
12
20
“{0:d}”.format(x)
将x转为十进制
print("{0:b}".format(10))
print("{0:b}".format(0o10))
print("{0:b}".format(0x10))
2
8
16
“{0:x}”.format(x)
将x转为十六进制
print("{0:x}".format(0b10))
print("{0:x}".format(0o10))
print("{0:x}".format(10))
2
8
a
注意:计算机是以“补码”的形式存储数据
反码、补码是为了让计算机能够处理正、负数之间的运算
原码,反码,补码三码合一
原码:最高位【符号位】为1,其他位与正数的表示相同
反码:除符号位外,其他位按位取反
补码:反码加1
2^8表示无符号数是 0~255, 表示有符号数是 -128~+127
(有符号数的取值范围为:-2^(n-1) ~ 2^(n-1)-1 (其中n为数据位数),当n=8时,数据取值范围:-128 ~ 127
无符号类型n=8时,数据取值范围为: 0 ~255)