二进制
计算机中是使用2进制来表示数据、指令的。

二进制中用第一位来表示正、负,0代表正数、1代表负数,其实也就是用一个正数的取反加1(补数)来表示与之对应的负数
二进制的减法运算
如果有减法运算的话,两个数相减则需要判断谁大谁小来决定符号位,所以计算机中是使用加法来代替减法的。

为什么0.1+0.2 不等于0.3
用二进制表示小数的方法如下:

出错的原因是因为有些十进制的数无法转换成二进制

如图中十进制的step并不是连续的,而是跳跃的,所以想要表示出0.1,那么二进制数就需要是无限循环0.00011001100...(无限循环),这和十进制无法表示1/3一样。所以0.1+0.2后得到的是一个无限循环的二进制,转换成十进制,经过四舍五入就不等于0.3。好在这种误差一般是可以接受的,如果要完全避免就需要尽量不使用小数计算,先扩大成整数,计算完成后再除回去。
浮点数
浮点数是指用符号、尾数、基数、指数表示的小数

数据压缩
数据传输时可以利用压缩来减少存储空间的占用。
-
RLE算法
例如文本:AAAAAABBCDDEEEEEF
我们可以利用“字符*出现次数”来实现压缩。
image.png
-
哈夫曼编码
出现频率高的字符用尽量少的位数编码来表示
例如文本:AAAAAABBCDDEEEEEF
image.png
利用哈夫曼树来压缩



字符集和编码
利用二进制可以表示出常用字符串。
-
ASCII码
使用七位可以表示出95个可打印字符和33个不可打印字符
image.png
2 Extended ASCII码
因为一些常用的符号在之前的ASCII码中没有,所以需要扩展

3 GB2312
国标2312是一个中文编码集收录7445个字符
4 GBK
向下兼容GB2312,收录21003个汉字
5 unicode编码
又名万国码、统一码 其中根据字节有UTF-8 、UTF-16
网友评论