Py001_02_01Python进制转换和字符编码and浮点数

计算机基础(进制转换)

我觉得这个只要你会开机关机就差不多了,如果不方便理解给你举个例子:

  1. 计算机主要就是二进制,二进制就是0/1 逢二进一
    (实在不好理解你就想现实中的电线插头 左零右火)
  2. 计算机通过电信号来判断是0还是1 比如电压低于50%就代表0 高于50%代表 1
  3. 于是这些 01组成的东西就被机器所认识也叫 机器语言
    但是这很反人类啊!多么复杂的大脑才能识别这个啊!
    于是出现了汇编,还是不够好,于是 C / C++ /JAVA等高级语言横空出世
  4. 8位 0、1组成的序列代表1字节
    • 1B(byte) = 8位(bit)
    • 1KB = 1024B
    • 1MB = 1024KB
    • 1GB = 1024MB
    • 1T = 1024GB

买手机可千万注意别被那些卖家忽悠了,老说啥机身内存大运行速度快啥的!大错特错 如果你买手机建议运行内存买高点

  • 电脑和手机这些设备分为 内存(RAM随机存储) 和 外存(ROM只读存储)
  • 内存就是 01这堆组成的电信号 没电了只要你编辑的word文档没保存就丢了
  • 外存就是 电脑上存的小说啊 mp3 短视频等 只要你不手动删除怎么开关机都在

如下是一些进制转换:

口诀:逢二进一 逢八进一 逢十进一 逢十六进一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
如:
二进制 十进制 八进制 十六进制
0000 0000 0 0 0
0000 0001 1 1 1
0000 0010 2 2 2
0000 0011 3 3 3
0000 0100 4 4 4
0000 0101 5 5 5
0000 0110 6 6 6
0000 0111 7 7 7
0000 1000 8 10 8
0000 1001 9 11 9
0000 1010 10 12 a
0000 1011 11 13 b
0000 1100 12 14 c
0000 1101 13 15 d
0000 1110 14 16 e
0000 1111 15 17 f

计算机表示数字到汉字的过程

  1. 内存里如何存0和1
  2. 如何存数字
  3. 存字符
  4. 存中文 GB2312 GBK GB18030
  5. 存所有字符(所有国家的字符Unicode万国码)
  6. 将Unicode存到计算机里(utf-8编码变长存储)

可以参考我之前写的文章 计算机是如何存数据的

windows系统中文版默认是gbk

mac\linux系统默认编码是utf-8

python里使用字符编码

python3和 python2最大的区别就是字符编码改了

  • python2 默认编码ascⅡ(默认不支持中文)
  • python3 默认编码utf-8

如果python2想支持中文呢?

1
2
3
4
5
6
7
8
9
.py文件程序首行声明编码

第一种 官方推荐的
#! -*-coding: utf-8 -*-

第二种
#!encoding:utf-8

python3里默认支持中文

浮点数

科学记数法:以10为基数

1
print(1.399e3) # 1399.0

复数

1
2
# 可以用来做量子力学(编程基本用不到)
print(-5+4j)

精确度

  • 浮点数占据的存储空间远大于整数的
  • python里能精确的存储17位超过就不准了可能有四舍五入的误差

如果你就想计算高精度的浮点数

1
借助 decimal 模块的 getcontext 和 Decimal方法(自行百度吧!)