Python 学习之进制与编码
进制 日常生活中,我们最熟悉的数据就是十进制计数。它的数值部分由十个不同的数字符号0、1、2、3、4、5、6、7、8、9来表示,我们把这些数字符号叫做数码,表示十种不同的状态。数码处于不同的位置(或数位)代表的意义是不同的。
二进制数的含义
二进制数的每个数位只可能取两个不同的数码"0"和"1",而且是"逢二进一"。为了熟悉二进制数的表示,我们就几个简单的数字,列出二进制数与其对应的十进制数。
正如十进制数据中最大的数码是9一样,在二进制数据中最大的数码是1。也就是说,在二进制数数据中,不能出现2或者比2大的数码;否则就是错误的数据。这一点初学者尤其应该注意。
八进制数的表示
八进制数的基数为8,具有八个数码,逢八进一,计数如下:
0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,30,31,32,33……
十六进制数的表示
十六进制数的基数为16,具有16个数码,逢16进一,计数如下:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,11,12,13,14,15,16,17,18,19,1A,1B…… 进制转换 要把一个十进制数转换为二进制数,首先把这个数以小数点为界分为两部分。对于整数部分是对该数除以2,记下它的余数,如果其商不等于0,再对其商除以2,仍然记下余数,重复此过程,直到商为零为止。倒序(先出来的余数写在最右边,依次类推,最后的余数写在最左边)写下所有余数,这个由余数构成的序列就是这个整数对应的二进制数;对于小数部分,则需要对该小数乘以2,记下它的整数部分,去掉整数部分后,如果余下的小数部分不为零,再对小数部分乘以2,再记下其整数部分,重复此过程,直到小数部分为零为止。顺次记下每次的整数部分就是这个数小数部分的二进制结果。
把该数整数部分的二进制结果和小数部分的二进制结果组合起来就是这个数据对应的二进制结果。
值得注意的是:并不是所有的有限位十进制数都能转换成有限位二进制数,对于这种情况,根据精度要求,保留一定的精度就可以了。
在计算机内部所有的信息都以二进制的形式进行存放、处理与传送,但在书写时可以以八进制和十六进制表示,这是因为二进制与八进制和十六进制之间的转换是很方便的。
由于十六进制的基数是16,八进制的基数是8,将十六进制数和八进制数转换为十进制和对二进制数求大小的方法相同,仍然采用将各数码乘以该位的权值,然后再取和的方法。
下面我们看简单数据的各种进制之间的转换关系:
(1)十六进制、八进制数与二进制数的直接转换
由于2的四次幂是16,2的三次幂是8,因此一位16进制数对应与四位二进制,一位八进制数对应三位二进制数。
为了将二进制数转化为十六进制数,只需从小数点开始向前,每四位一组划开,再从小数点向后,也是每四位一组划开,若小数点右边的最后一组不够四位,则添0补足四位,然后可以从上表中查到每一组对应的16进制数,依次写出来就可以了。同样的方法,若要将二进制数转化为八进制数,只需从小数点开始向前,每三位一组划开,再从小数点向后,也是每三位一组划开,若小数点右边的最后一组不够三位,则添0补足三位,然后从上表中查到每一组对应的八进制数,依次写出来就行了。 如果要将八进制数转换为二进制,则只要把每个八进制位用相应的三位二进制数代替。 当然,对于上表中不够三位的数据,前边以0补足。例如:八进制的1要变成001,八进制的2要变成010,等等。同理,如果要将十六进制数转换为二进制,则只要将每个十六进制位用相应的四位二进制数代替,对于上表中不够四位的数据,也是在前边以0补足。例如,16进制的1要转换为0001,16进制的2要转换为0010,等等。
由此可见,八进制或十六进制数与二进制数之间的转换极为方便,而且用八进制或者十六进制书写数据要比二进制简短,口读也方便。因此八进制或十六进制数常用于指令的书写、手编程序或者目标程序的输入、输出。特别指出的是:计算机数据的存储和传输基本上以字节为单位,一个字节包含8个二进制位,正好是两位十六进制数,因此十六进制数在计算机的程序开发和内存管理程序中得到了极为广泛的应用。
在计算机界,为了标志不同数制的数据,一般在数据末尾使用特殊的标记。以D或不标记表示十进制数据,以B表示二进制数据,以H表示十六进制数据,以O表示八进制数据。例如:18H,则表示十六进制数据18,其等价于十进制数据24。17O则表示八进制的数据17,其值等价于十进制数15。 进制生活小应用
硬盘空间少比买的时候要少,
是因为换算时他们将 1024 按照 1000来算
500G的硬盘: Bytes:按1000来算
500G 硬盘
1K = 1000B
1M = 1000K
1G = 1000M = 1000*1000*1000B =100
500000000000/1024/1024/1024 B = 465.66128730773926 B
百兆宽带,下载速度只能达到十多兆。
宽带运营商按照二进制来计算,所以要100M的宽带要除8才是下载的速度。
32位和64位 /32bit和64bit的区别
1. 对操作系统来说,64位和32位指最大内存寻址空间,32位最大4GB(2^32),64位理论上16EB(2^64),但现在一般都是2^48
2、对硬件来说,64位和32位指数据宽度,64位一次取8字节y也就是64bit,32取4字节也就是32bit,所以理论上64位比32位性能提高了一倍。
实际上的情况是,达不到,内存变大了,需要寻址更多。
3、对应用程序来说,应用程序基于操作系统 和硬件,其使用的指令宽度随系统和硬件变化。
32位和64位区别的最常见表现就是64万位操作系统可以支持4G以上的内存。缺点也是内存占用,64位代码比32位代码多占用空间,
现在来看64位操作系统兼容32位软件。反之则不行。
32位和64位最本质的区别是CPU来决定的,操作系统的位数是是看最大能把CPU的性能发挥到多高。我们现在在市面上见到的CPU都是64位的,32位的CPU已经是老古董了。
编码
编码单位
位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。
字节 byte:8个二进制位为一个字节(B),最常用的单位。
1B(bytes) = 8bit
1KB (Kilobyte 千字节)=1024B,
1MB (Megabyte 兆字节 简称“兆”)=1024KB,
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
1TB(Trillionbyte 万亿字节 太字节)=1024GB,
1PB(Petabyte 千万亿字节 拍字节)=1024TB,
1EB(Exabyte 百亿亿字节 艾字节)=1024PB,
1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
1BB (Brontobyte 一千亿亿亿字节)= 1024 YB
进制
Binary(2)
|
Octal(8)
|
Decimal(10)
|
Hex(16)
|
0
|
0
|
0
|
00
|
1
|
1
|
1
|
1
|
10
|
2
|
2
|
2
|
11
|
3
|
3
|
3
|
100
|
4
|
4
|
4
|
101
|
5
|
5
|
5
|
110
|
6
|
6
|
6
|
111
|
7
|
7
|
7
|
1000
|
10
|
8
|
8
|
1001
|
11
|
9
|
9
|
1010
|
12
|
10
|
A
|
1011
|
13
|
11
|
B
|
1100
|
14
|
12
|
C
|
1101
|
15
|
13
|
D
|
1110
|
16
|
14
|
E
|
1111
|
17
|
15
|
F
|
上层字符
编码分类
ASCII
在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
八进制
|
十六进制
|
十进制
|
字符
|
八进制
|
十六进制
|
十进制
|
字符
|
0
|
0
|
0
|
nul
|
100
|
40
|
64
|
@
|
1
|
1
|
1
|
soh
|
101
|
41
|
65
|
A
|
2
|
2
|
2
|
stx
|
102
|
42
|
66
|
B
|
3
|
3
|
3
|
etx
|
103
|
43
|
67
|
C
|
4
|
4
|
4
|
eot
|
104
|
44
|
68
|
D
|
5
|
5
|
5
|
enq
|
105
|
45
|
69
|
E
|
6
|
6
|
6
|
ack
|
106
|
46
|
70
|
F
|
7
|
7
|
7
|
bel
|
107
|
47
|
71
|
G
|
10
|
8
|
8
|
bs
|
110
|
48
|
72
|
H
|
11
|
9
|
9
|
ht
|
111
|
49
|
73
|
I
|
12
|
0a
|
10
|
nl
|
112
|
4a
|
74
|
J
|
13
|
0b
|
11
|
vt
|
113
|
4b
|
75
|
K
|
14
|
0c
|
12
|
ff
|
114
|
4c
|
76
|
L
|
15
|
0d
|
13
|
er
|
115
|
4d
|
77
|
M
|
16
|
0e
|
14
|
so
|
116
|
4e
|
78
|
N
|
17
|
0f
|
15
|
si
|
117
|
4f
|
79
|
O
|
20
|
10
|
16
|
dle
|
120
|
50
|
80
|
P
|
21
|
11
|
17
|
dc1
|
121
|
51
|
81
|
Q
|
22
|
12
|
18
|
dc2
|
122
|
52
|
82
|
R
|
23
|
13
|
19
|
dc3
|
123
|
53
|
83
|
S
|
24
|
14
|
20
|
dc4
|
124
|
54
|
84
|
T
|
25
|
15
|
21
|
nak
|
125
|
55
|
85
|
U
|
26
|
16
|
22
|
syn
|
126
|
56
|
86
|
V
|
27
|
17
|
23
|
etb
|
127
|
57
|
87
|
W
|
30
|
18
|
24
|
can
|
130
|
58
|
88
|
X
|
31
|
19
|
25
|
em
|
131
|
59
|
89
|
Y
|
32
|
1a
|
26
|
sub
|
132
|
5a
|
90
|
Z
|
33
|
1b
|
27
|
esc
|
133
|
5b
|
91
|
[
|
34
|
1c
|
28
|
fs
|
134
|
5c
|
92
|
\
|
35
|
1d
|
29
|
gs
|
135
|
5d
|
93
|
]
|
36
|
1e
|
30
|
re
|
136
|
5e
|
94
|
^
|
37
|
1f
|
31
|
us
|
137
|
5f
|
95
|
_
|
40
|
20
|
32
|
sp
|
140
|
60
|
96
|
'
|
41
|
21
|
33
|
!
|
141
|
61
|
97
|
a
|
42
|
22
|
34
|
"
|
142
|
62
|
98
|
b
|
43
|
23
|
35
|
#
|
143
|
63
|
99
|
c
|
44
|
24
|
36
|
$
|
144
|
64
|
100
|
d
|
45
|
25
|
37
|
%
|
145
|
65
|
101
|
e
|
46
|
26
|
38
|
&
|
146
|
66
|
102
|
f
|
47
|
27
|
39
|
`
|
147
|
67
|
103
|
g
|
50
|
28
|
40
|
(
|
150
|
68
|
104
|
h
|
51
|
29
|
41
|
)
|
151
|
69
|
105
|
i
|
52
|
2a
|
42
|
*
|
152
|
6a
|
106
|
j
|
53
|
2b
|
43
|
+
|
153
|
6b
|
107
|
k
|
54
|
2c
|
44
|
,
|
154
|
6c
|
108
|
l
|
55
|
2d
|
45
|
-
|
155
|
6d
|
109
|
m
|
56
|
2e
|
46
|
.
|
156
|
6e
|
110
|
n
|
57
|
2f
|
47
|
/
|
157
|
6f
|
111
|
o
|
60
|
30
|
48
|
0
|
160
|
70
|
112
|
p
|
61
|
31
|
49
|
1
|
161
|
71
|
113
|
q
|
62
|
32
|
50
|
2
|
162
|
72
|
114
|
r
|
63
|
33
|
51
|
3
|
163
|
73
|
115
|
s
|
64
|
34
|
52
|
4
|
164
|
74
|
116
|
t
|
65
|
35
|
53
|
5
|
165
|
75
|
117
|
u
|
66
|
36
|
54
|
6
|
166
|
76
|
118
|
v
|
67
|
37
|
55
|
7
|
167
|
77
|
119
|
w
|
70
|
38
|
56
|
8
|
170
|
78
|
120
|
x
|
71
|
39
|
57
|
9
|
171
|
79
|
121
|
y
|
72
|
3a
|
58
|
:
|
172
|
7a
|
122
|
z
|
73
|
3b
|
59
|
;
|
173
|
7b
|
123
|
{
|
74
|
3c
|
60
|
<
|
174
|
7c
|
124
|
|
|
75
|
3d
|
61
|
=
|
175
|
7d
|
125
|
}
|
76
|
3e
|
62
|
>
|
176
|
7e
|
126
|
~
|
77
|
3f
|
63
|
?
|
177
|
7f
|
127
|
del
|
GB2312
GBK
BIG5
GB18030
ANSI编码
Unicode
UTF-8 编码
UTF-16 和 UTF-32 编码
base64编码
Python 学习之进制与编码的更多相关文章
- Python输出16进制不带0x补零,整数转16进制,字符串转16进制
Python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...
- python补充之进制转换、exec、eval、compile
目录 eval.exec和compile 1.eval函数 2.exec函数 eval()函数和exec()函数的区别 python中的进制转换 eval.exec和compile 1.eval函数 ...
- Python内置进制转换函数(实现16进制和ASCII转换)
在进行wireshark抓包时你会发现底端窗口报文内容左边是十六进制数字,右边是每两个十六进制转换的ASCII字符,这里使用Python代码实现一个十六进制和ASCII的转换方法. hex() 转换一 ...
- python中的进制转换
python中常用的进制转化通常有两种方法: 1.用内置函数hex(),oct(),bin(),对应的数字表示为0x,0o,0b,功能是把十进制数字转化为其他进制 >>> int( ...
- python 数据类型、进制转换
数据类型 存储单位 最小单位是bit,表示二进制的0或1,一般写作b 最小的存储单位是字节,用byte表示,1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB ...
- Python中各种进制之间的转化
1.十进制转化为其它进制 (1)bin(x):十进制转化为二进制 [实例1] x=bin(20) # x的值为字符串'0b10100' (2)oct(x):十进制转化为八进制 [实例2] x=oc ...
- python 数值系列-进制转换
进制转换 前语: 如果您不通二进制,八进制,十六进制,请移步:http://www.360doc.com/content/17/0211/21/40101294_628326994.shtml 问题 ...
- python学习第十八天计算机字符编码
人类语言和计算机语言二进制怎么沟通,最开始字符编码为ascii码对照表 包括数据和字母,没有汉字,中国自己搞了一套自己的编码 gb2312编码后来发展GBK编码,日本,韩国都,甚至台湾也搞自己的编码, ...
- python数据结构:进制转化探索
*********************************第一部分*************************************************************** ...
随机推荐
- 使用B或BL跳转时,下一条指令的地址是这样计算的
B跳转指令:它是个相对跳转指令,其机器码格式如下: [31:28]位是条件码:[27:24]位为“1010”(0xeaffffff)时,表示B跳转指令,为“1011”时,表示BL跳转指令:[23:0] ...
- 几种常用远程通信技术(RPC,Webservice,RMI,JMS)的区别
原文链接:http://blog.csdn.net/shan9liang/article/details/8995023 RPC(Remote Procedure Call Protocol) RPC ...
- SQL语句 - 嵌套查询
嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. ...
- [under the hood]Reduce EXE and DLL Size with LIBCTINY.LIB
Matt Pietrek Download the code for this article: Hood0101.exe (45KB) W ay back in my October 1996 co ...
- 使用jQuery开发一个带有密码强度检验的超酷注册页面
在今天的jQuery教程中,我们将介绍如何使用jQuery和其它相关的插件来生成一个漂亮的带有密码强度检验的注册页面,希望大家喜欢! 相关的插件和类库 complexify - 一个密码强度检验jQu ...
- Android之布局onClick属性写法规则
/** Called when the user clicks the Send button */public void sendMessage(View view) { // Do some ...
- FastReport.Net在Rozor中的应用
Webconfig中配置 IIS6.0 <system.web> <httpHandlers> 下增加 <httpHandlers> <add path=&q ...
- 活学活用,webapi HTTPBasicAuthorize搭建小型云应用的实践
HTTP使用BASIC认证,WebAPI使用[HTTPBasicAuthorize]标记控制器就是使用了BASIC认证. BASIC认证的缺点HTTP基本认证的目标是提供简单的用户验证功能,其认证过程 ...
- WEB安全入门(转)
一. 首先你得了解Web Web分为好几层,一图胜千言:事实是这样的:如果你不了解这些研究对象是不可能搞好安全研究的.这样看来,Web有八层(如果把浏览器也算进去,就九层啦,九阳神功……)!!!每层都 ...
- VC文件夹大小(转)
使用自带的类 CFileFind finder.FindNextFile(); 遍历所有文件,按照修改时间顺序遍历 //参数输入 文件夹路径 //返回文件夹大小 byte DWORD GetDirS ...