1、计算机数字的编码方式:
补码编码:计算公式
(最高位负权值,最高位是1,那就是一个负数的权值减去其他位的和)
(最高位是0,其他位的和就是这个数,正数)
32bit 有效值31 有符号数signed;unsigned32;
+ -有无符号无影响;有影响></<<>>
数字 字符 ascll标准 字符编码,英语系国家,非英语系国家(国标,全世界统一unicode)
国标码:用高128个状态(数字)描述,GBk,
使用国标码不影响ascll,十六进制大于8就是高128状态;定长编码;
用2b 做了一张表,table unicode 65536;一个字符两个字节;两个十六进制位表示一个字节;
0x0031;
0110 1101;
1100 1001 10;用最高位状态来描述是否有2个或以上的字节;
utf-8(unicode改进版): 2b 动态变长编码;
(解决中文乱码bug,windows是国标码,Linux用的是utf-8)
c语言提供一个标点符号'?',单引号只能表示一个字节,0-255,char。
'ascll码中的符号',‘1’,‘a',ascll(1b 0-255 低127个状态[0-6bit]给了8bit只用了7bit)
0x00--0x1f 32个控制字符;%c看不见;
0x20 --0x7f 可见字符,用%c看得见,//char a = 32/' '/0x20;
char a = ’8‘;
int b = a -'0' +10;字符减去‘0’,可以得数字,因为在ascll表中数字字符是连续排列的;
大写字母在小写字母前面,大写字符小于小写字符,排序中,从小到大,大写字符在前,优先级高;
乱码:不是在可见范围内;0x20--0xf;可能是越界访问;
表示不可见字符用转义字符;语法:\字符(能表示得行为不多 \n回车 \r换行 \t制表符【对齐】);\数字(\101八进制数字,数字只能0-7);
utf-8 编码:
例:F8 9F 98 82 utf-8四字节;
F---11110------------》11110xxx 10xxxxxx 10xxxxxx 10xxxxxx