二進制 國標碼與機內碼轉換例題,國標碼與機內碼轉換

漢字機內碼與國標碼轉換問題

二進制 國標碼與機內碼轉換例題,國標碼與機內碼轉換

文章插圖
區位碼轉換成國標碼是區位碼加上2020H(注意是16進制的)國標碼轉成機內碼是國標碼加上8080H(也是16進制) 因為漢字是由兩個字節組成的 國標碼和區位碼的區別就是 國標碼的兩個字節的最高位為0,而機內碼的最高位為1,所以就要加上8080H(化成2進制的話就是每個字節的最高位變1)
國標碼與機內碼的區別是什么?國標碼并不等于區位碼,它是由區位碼稍作轉換得到,其轉換方法為:先將十進制區碼和位碼轉換為十六進制的區碼和位碼 。


我這樣跟你說個流程,可能不是非常確切,但可以幫助你理解: 機外碼→區位碼→國標碼→機內碼 。
1、機外碼就是你外界輸入的字符,這個字符輸入后會有一個相對應的區位碼(就是一個94*94的棋盤格格,你輸入的漢子會對應里面的一個格子,行+列就是我們這里的區+位),
2、區位碼經過換算可以變成國標碼(所以區位碼→國標碼這一步只是表示轉換下而已),
3、國標碼再經過換算可以變成機內碼(一般是16進制數表示) 。
機內碼和國標碼之間怎么轉換的一、將區位碼轉換為國標碼.兩區位碼改寫成十六進制,XXOOH.XX是區碼,OO是衛碼H代表十六進制.將XXOOH加2020H得到的就是國標碼
二、國標碼轉換成機內碼.將所得到的國標碼加8080H,就可得機內碼.
如果是機內碼轉化成國標碼,或者是國標碼轉化成區位碼,做減法就可以
國標碼5E38H轉換成機內碼?計算機處理漢字信息的前提條件是對每個漢字進行編碼,這些編碼統稱為漢字編碼 。漢字信息在系統內傳送的過程就是漢字編碼轉換的過程 。
漢字交換碼:漢字信息處理系統之間或通信系統之間傳輸信息時,對每一個漢字所規定的統一編碼,我國已指定漢字交換碼的國家標準“信息交換用漢字編碼字符集——基本集”,代號為GB 2312—80,又稱為“國標碼” 。
國標碼:所有漢字編碼都應該遵循這一標準,漢字機內碼的編碼、漢字字庫的設計、漢字輸入碼的轉換、輸出設備的漢字地址碼等,都以此標準為基礎 。GB 2312—80就是國標碼 。該碼規定:一個漢字用兩個字節表示,每個字節只有7位,與ASCII碼相似 。
區位碼:將GB 2312—80的全部字符集組成一個94×94的方陣,每一行稱為一個“區”,編號為0l~94;每一列稱為一個“位”,編號為0l~94,這樣得到GB 2312—80的區位圖,用區位圖的位置來表示的漢字編碼,稱為區位碼 。
機內碼:為了避免ASCII碼和國標碼同時使用時產生二義性問題,大部分漢字系統都采用將國標碼每個字節高位置1作為漢字機內碼 。這樣既解決了漢字機內碼與西文機內碼之間的二義性,又使漢字機內碼與國標碼具有極簡單的對應關系 。
漢字機內碼、國標碼和區位碼三者之間的關系為:區位碼(十進制)的兩個字節分別轉換為十六進制后加20H得到對應的國標碼;機內碼是漢字交換碼(國標碼)兩個字節的最高位分別加1,即漢字交換碼(國標碼)的兩個字節分別加80H得到對應的機內碼;區位碼(計算機處理漢字信息的前提條件是對每個漢字進行編碼,這些編碼統稱為漢字編碼 。漢字信息在系統內傳送的過程就是漢字編碼轉換的過程 。
漢字交換碼:漢字信息處理系統之間或通信系統之間傳輸信息時,對每一個漢字所規定的統一編碼,我國已指定漢字交換碼的國家標準“信息交換用漢字編碼字符集——基本集”,代號為GB 2312—80,又稱為“國標碼” 。
國標碼:所有漢字編碼都應該遵循這一標準,漢字機內碼的編碼、漢字字庫的設計、漢字輸入碼的轉換、輸出設備的漢字地址碼等,都以此標準為基礎 。GB 2312—80就是國標碼 。該碼規定:一個漢字用兩個字節表示,每個字節只有7位,與ASCII碼相似 。
區位碼:將GB 2312—80的全部字符集組成一個94×94的方陣,每一行稱為一個“區”,編號為0l~94;每一列稱為一個“位”,編號為0l~94,這樣得到GB 2312—80的區位圖,用區位圖的位置來表示的漢字編碼,稱為區位碼 。
機內碼:為了避免ASCII碼和國標碼同時使用時產生二義性問題,大部分漢字系統都采用將國標碼每個字節高位置1作為漢字機內碼 。這樣既解決了漢字機內碼與西文機內碼之間的二義性,又使漢字機內碼與國標碼具有極簡單的對應關系 。
漢字機內碼、國標碼和區位碼三者之間的關系為:區位碼(十進制)的兩個字節分別轉換為十六進制后加20H得到對應的國標碼;機內碼是漢字交換碼(國標碼)兩個字節的最高位分別加1,即漢字交換碼(國標碼)的兩個字節分別加80H得到對應的機內碼;區位碼(十進制)的兩個字節分別轉換為十六進制后加A0H得到對應的機內碼 。
十進制)的兩個字節分別轉換為十六進制后加A0H得到對應的機內碼 。
計算機中國標碼轉換為內碼【二進制 國標碼與機內碼轉換例題,國標碼與機內碼轉換】Linux shell 進制轉換

包括:

i.任意進制轉化為十進制((num=base#number)) 【base和number必須一致,是同一種進制】

ii.十進制轉化為任意進制`echo "obase=進制;值"|bc` 和`echo "值 進制 op"|bc` 【這里的值代表十進制數字】

iii.任意進制互轉;有了i和ii就可以用十進制做中間媒介值互轉了 。