Py001_02_01Python进制转换和字符编码and浮点数
计算机基础(进制转换)
我觉得这个只要你会开机关机就差不多了,如果不方便理解给你举个例子:
- 计算机主要就是二进制,二进制就是0/1 逢二进一
(实在不好理解你就想现实中的电线插头 左零右火) - 计算机通过电信号来判断是0还是1 比如电压低于50%就代表0 高于50%代表 1
- 于是这些 01组成的东西就被机器所认识也叫 机器语言
但是这很反人类啊!多么复杂的大脑才能识别这个啊!
于是出现了汇编,还是不够好,于是 C / C++ /JAVA等高级语言横空出世 - 8位 0、1组成的序列代表1字节
- 1B(byte) = 8位(bit)
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
- 1T = 1024GB
买手机可千万注意别被那些卖家忽悠了,老说啥机身内存大运行速度快啥的!大错特错 如果你买手机建议运行内存买高点
- 电脑和手机这些设备分为 内存(RAM随机存储) 和 外存(ROM只读存储)
- 内存就是 01这堆组成的电信号 没电了只要你编辑的word文档没保存就丢了
- 外存就是 电脑上存的小说啊 mp3 短视频等 只要你不手动删除怎么开关机都在
如下是一些进制转换:
口诀:逢二进一 逢八进一 逢十进一 逢十六进一
1 | 如: |
计算机表示数字到汉字的过程
- 内存里如何存0和1
- 如何存数字
- 存字符
- 存中文 GB2312 GBK GB18030
- 存所有字符(所有国家的字符Unicode万国码)
- 将Unicode存到计算机里(utf-8编码变长存储)
可以参考我之前写的文章 计算机是如何存数据的
windows系统中文版默认是gbk
mac\linux系统默认编码是utf-8
python里使用字符编码
python3和 python2最大的区别就是字符编码改了
- python2 默认编码ascⅡ(默认不支持中文)
- python3 默认编码utf-8
如果python2想支持中文呢?
1 | .py文件程序首行声明编码 |
浮点数
科学记数法:以10为基数
1 | print(1.399e3) # 1399.0 |
复数
1 | # 可以用来做量子力学(编程基本用不到) |
精确度
- 浮点数占据的存储空间远大于整数的
- python里能精确的存储17位超过就不准了可能有四舍五入的误差
如果你就想计算高精度的浮点数
1 | 借助 decimal 模块的 getcontext 和 Decimal方法(自行百度吧!) |