回车与换行
回车'0d'或\r或CR, 换行'0a'或\n或LF
unix: '\n', mac: '\r', windows: "\r\n"
为什么负数的补码等于其绝对值取反再加一
下面是8位的二进制与十进制的对照表
二进制数 十进制数
10000000 -128
10000001 -127
10000010 -126
........ ....
11111101 -3
11111110 -2
11111111 -1
00000000 0
00000001 1
00000010 2
........ ....
01111100 124
01111101 125
01111110 126
01111111 127
通过观察易发现绝对值相同的正负数相加,其结果为1,0000,0000
设此两数分别为A和B,那么A+B=1,0000,0000=11111111 + 1
从而A=(11111111+1) - B = (11111111-B) + 1 = B取反所得数+1
不过要注意对于10000000,即十进制的-128,没有对应的128,所以不能作如上计算
为什么会有乱码
一般而言,编码的本质是形到数的映射,解码的本质是数到形的映射。乱码的出现,就是解码过程出了问题。我们把正确的解码程序集表示为{<数1,形1>,<数2,形2>,...}。如果你用<数a, 形b>去解码数c,显然是不行的。大部分程序允许显示指定使用的编码,如utf-8,gb2312...。你指定对了,解码就没问题了。当然,有些程序号称是智能的,声称能自动识别所用的编码类型。然而有时它还是会出问题的,这时一般可以采用显示指定来解决问题。
ASCII码
asciifull.gif
UCS-2和UCS-4
中文编码杂谈
阅读(1437) | 评论(0) | 转发(0) |