漢字的ASCII是負數是因爲你錯誤使用有符號的整型觀察它,它實質上不是負數。
相關問題細節如下:
-
英文標準的ASCII碼中只有128個符號,只需要7位,但是計算機分配存儲的最基本單位是字節,至少是8位,因此最高位爲0;
-
因此常見的西文符號的ASCII都是在0-127之間,無論是有符號還是無符號去觀察它們,都是正的。
-
中文的符號遠超過256個,因此用一個字節不能存儲漢字,早期的GB2312採用了兩個字節。
-
但是很麻煩的問題是一個漢字用兩個字節存儲在計算機中後,和兩個西文字母的ASCII混淆,爲了避免這個混淆,漢字兩個字節的最高位都是1。
-
如果用有符號的數去讀取一個漢字的內容,最高位的1正好和負號位置相同,因此此時就會發現漢字的內嗎是負的。
實質上漢字應該用字符型而不是整型去讀取和顯示它。