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数据结构:进制转化探索
		*********************************第一部分*************************************************************** ... 
随机推荐
- java-cef系列视频第四集:自定义协议
			上一集我们介绍了如何为java-cef添加flashplayer支持. 本视频介绍java-cef中的自定义协议 本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可. 
- Ubuntu进不入系统,一直停留在ubuntu图标画面(转)
			Ubuntu进不入系统,一直停留在ubuntu图标画面(转) 在VMware中对Ubuntu进行“关闭电源”后,再次进入,一直停留在ubuntu的图标画面,无法进入系统了!网上也有别的网友碰到这个问题 ... 
- itextpdf JAVA 输出PDF文档
			使用JAVA生成PDF的时候,还是有些注意事项需要处理的. 第一.中文问题,默认的itext是不支持中文的,想要支持,需要做些处理. 1.直接引用操作系统的中文字体库支持,由于此方案限制性强,又绑定了 ... 
- webkit内核分析之 Frame
			参考地址:http://blog.csdn.net/dlmu2001/article/details/6164873 1. 描述 Frame类是WebCore内核同应用之间联系的一个重要的类.它 ... 
- 条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]>
			<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--><!--[if IE]> 所有的IE可识别 <![e ... 
- [转]Android dex分包方案
			转载自:https://m.oschina.net/blog/308583 当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装 ... 
- C#基础总结之四List-Hashtable-冒泡排序
			#region 第四天作业 名片--------ArrayList //ArrayList card = new ArrayList(); //card.Add("2202111001122 ... 
- [转]relative、absolute和float
			position:relative和position:absolute都可以改变元素在文档中的位置,都能激活元素的left.top.right.bottom和z-index属性.(默认这些属性未激活, ... 
- Java hashCode() 和 equals()的若干问题解答
			本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equa ... 
- 4、总结:基于Oracle Logminer数据同步
			最近开发Oracle数据同步功能,做了些调研和验证,这个工作过去有段时间,怕时间长了忘记,故用博客共享出来.在这系列中共写了三篇文章,第一篇是写LogMiner配置及使用,第二篇是测试了LogMine ... 
