1.2 讲一下编码什么的
Crossin写了一篇番外简单讲了一下2.7和3的一些区别,和我之前写的意思差不多。后面教程的我觉得应该没有什么问题了,大家就跟着看看写写吧。
if,elif,else这些是不是把你看晕了?所以说咱们数学一定要好好学。如果你正在上高中,那么记着:数学必修三一定要好好学!特别是程序框图那块!
如果你还没有学到程序框图而先学了编程,那么你在学习这一块的时候可以把框图翻译成程序;学习框图之后,在看程序时遇到比较复杂的循环嵌套啥的可以画个框图整理一下逻辑。
必修三二进制那一块儿······了解好二进制可以帮助你更好的理解计算机。你现在知道为什么1GB=1024MB了吗?
1.2.1 字符在二进制中是怎么表示的
程序猿常识:
看了这个,你知道为什么1KB≠1000B了吧(和正常单位不同)?知道为啥买的U盘总是比厂家标的小了吧?
讲到这里,又应该普及一下关于字符集的常识,这有助于你理解计算机是如何将二进制变成我们读得懂的字母的:
看不懂?看看ASCII码表体会一下:
二进制 | 十进制 | 十六进制 | 缩写 | 名称/意义 |
---|---|---|---|---|
0000 0000 | 0 | 00 | NUL | 空字符(Null) |
以上是控制字符
二进制 | 十进制 | 十六进制 | 图形 |
---|---|---|---|
0010 0000 | 32 | 20 | (空格) |
0010 0001 | 33 | 21 | ! |
0100 0001 | 65 | 41 | A |
0100 0010 | 66 | 42 | B |
0100 0011 | 67 | 43 | C |
以上是可显示字符
Unicode同样原理,只是字符多很多。
就酱,伟大的程序猿发明了与机器交流的方法,踏入了新时代~
另外,0x几几是表示十六进制,为了不与十进制搞混(例如十进制的10和十六进制的10是不同的),类似的,0b几几就表示二进制。十六进制的存在是为了解决二进制太长的问题,而且它又正好是2的4次方。
1.2.2 数字在二进制中又是怎么表示的
我们知道字符的’1’其实并不是1,那么-1在计算机中又是怎么表示的呢?这就要讲到原码、反码和补码了。为了表示正负,二进制中牺牲了最高位(也就是最左边的一位)的一位空间。若是正数符号位置0,负数则置1。于是+2是0010(假设用4bit来表示),-2是1010,这就是我们的原码。但是咱们的计算机只会加法,减法要怎么实现呢?于是出现了反码补码。把一个负数除了符号位的其它位取反,就是反码;把反码再+1,就是补码了(正数反码、补码与原码一样)。
补码有啥好处呢?在做减法的时候,只要两个数的补码相加就实现了。数学上的原理——CSDN。
如果不考虑正负,就是无符号数。由于多了一位符号位,它能表示的最大数值就大了一倍。
既然位数有限,那么能表示的最大/最小数就有限(你可以算算8bit最大/最小能表示几),就需要考虑溢出。例如你在4bit下要用0111加0001,变成1000,咦?正数加正数变成负数了?这就是溢出。