陳向陽
摘 要:眾所周知,在計算機內部,數(shù)據(jù)或信息最終都以二進制存儲。在實際應用中,人們雖然習慣使用十進制數(shù)據(jù)解決問題,但對于有些問題的處理,如果能夠合理的使用二進制數(shù)據(jù),會獲得意想不到的效果,比如在幾張帶有編號的紙板上寫上一些數(shù)字,利用二進制與十進制的轉換快速猜出該數(shù)字;在電報中使用二進制數(shù)據(jù)編寫報文內容,然后通過一定的規(guī)律來譯碼,得到清晰的報文內容。
關鍵詞:二進制十進制猜測明碼暗碼
中圖分類號:TP3 文獻標識碼:A 文章編號:1674-098X(2012)05(c)-0031-01
二進制數(shù)據(jù)中只有兩個數(shù)碼,即0和1,隨機的給出一個二進制數(shù)據(jù),比如11011,記下它們的位權,然后將這些位權與對應位上的數(shù)碼相乘,所得之和即為一個十進制數(shù)據(jù),這是一個即便是計算機初學者都掌握的知識,但是如果能合理的使用它,有時候卻非常有趣!
1 二進制與數(shù)據(jù)猜測
事先準備N張卡片,從0到N-1依次編上號,利用二進制就可以準確的猜出1到2N-1之內的任意自然數(shù)。假設N=5,則可以準確的猜出1到31之間的任意自然數(shù)。從0到4依次給每張卡片編號。
所有編上號的卡及各卡上的數(shù)字全部記下后,猜數(shù)的原理是:若數(shù)據(jù)不在卡上,則相應位置記為0,反之,記為1。
2 二進制數(shù)據(jù)與電文
2.1 ASCII碼作電文暗碼
兩個實體之間互發(fā)電文時,可按事先規(guī)定好的翻譯電文的約定來進行電文暗碼的設置及明碼的翻譯,若電文內容全為漢字時,可按下面的算法進行電文暗碼的設置及明碼的翻譯。
暗碼設置:用一個字節(jié)寫出各個英文字母及自然數(shù)1、2、3、4。
明碼翻譯:
第一步:將每個字節(jié)間加一空格
第二步:將二進制表示的各個字節(jié)轉化成十進制數(shù)。
第三步:將每個十進制數(shù)當做ASCII碼值寫出其對應的字符,若該十進制數(shù)是1、2、3或4時,則表示聲調中的1、2、3或4聲。
第四步:寫出帶有聲調的拼音
第五步:譯出明碼。
明碼翻譯:
第一步:每個字節(jié)之間加一空格
第二步:寫出每8位二進制數(shù)的十進制數(shù)
第三步:寫出對應的字母
第四步:注音
第五步:得到明碼
2.2 用BCD碼作電文暗碼
當電文明碼內容(假定全為漢字)已知時,可按下面的算法對該電文使用四位的二進制數(shù)據(jù)加密。
第一步:將電文內容注上拼音。
第二步:給出第一步中每個英文字母的ASCII碼,四個聲調用1到4代替。
第三步:給出第二步中每個數(shù)字的BCD碼。
第四步:所有的BCD碼連在一起即為該電文的暗碼。
用BCD碼作電文暗碼翻譯成明文時,將所有的電文內容以四位二進制數(shù)據(jù)為一組,將每組二進制數(shù)據(jù)翻譯成相應的十進制數(shù)據(jù)。
用BCD碼作電文暗碼時,最后翻譯成的數(shù)字中1到4中的數(shù)字很多,這就容易造成二義,也就是說這些數(shù)字到底是屬于ASCII值中的數(shù)字還是用來它表示聲調呢?這需要認真判斷!
2.3 用AB碼作電文暗碼
所謂AB碼是指ASCII碼和BCD碼混合使用,使用AB碼的算法如下:
第一步:將明碼漢字部分注音(用大寫字母)。
第二步:寫出每個字母的ASCII碼,四個聲調用1到4依次表示
第三步:自左至右用ABABAB…翻譯,即第一個用ASCII碼表示,第二個用BCD碼表,第三個用ASCII碼表示,第四個用BCD碼表示,…;碰到1到4時,皆用ASCII碼表示。
電文AB碼還原成明碼算法:
第一步:將AB碼按ASCII碼和BCD碼的形式用空格分開。
第二步:將相應的ASCII碼和BCD碼轉化成十進制數(shù)據(jù)。
第三步:寫出除1到4以外的數(shù)值作為ASCII值對應的字符。
第三步:寫出帶有聲調的拼音。
第四步:獲取明碼。
2.4 用AC碼作電文暗碼
所謂的AC碼即ASCII碼和外碼,用AC碼作電文暗碼時的規(guī)則是:若內容為漢字時,高位為1,若為英文字符,高位為0,具體算法與3.1類似,只是漢字部分的最高位為1,英文字母的最高位為0。如電文內容如下:ASCII碼用7位的二進制表示。那么將其譯成AC碼的步驟如下:
第一步:漢字部分用拼音表示,其余內容不變。
第二步:將第一步中的字母用ASCII碼表示,聲調用0到4表示(0表示輕聲)。
第三步:將第二步中的ASCII碼及0-4用二進制表示,其中漢字的最高用1表示,字母的最高位用0表示。
第四步:獲取AC碼。
將AC碼翻譯成明文,按上面的步驟的逆即可完成。即:
第一步:將AC碼每8位間加一空格,以示區(qū)分。
第二步:轉化為十進制(需要注要的是高位若為0表示字母或其它字符,高位若為1表示漢字的拼音字母)。
第三步:寫成字符或拼音。
第四步:獲得明文。
3 結語
文章運用二進制獨有的性質,介紹了如何利用二進制來進行數(shù)字的猜測,又巧妙地利用二進制的特征來進行電文的加密。
參考文獻
[1] 譚浩強.C程序設計[M].北京:清華大學出版社,1991:255~267.
[2] 蔡自興,徐光祐.人工智能及其應用[M].北京.清華大學出版社,2004:10~21.
[3] 孫家啟.計算機文化基礎[M].安徽大學出版社,2010:10~17.
[4] 李志成,劉基余.關于GPSL5導航電文的編碼特點研究[J].測繪通報,2006,10:4~6.
[5] 梁華國,蔣翠云.基于交替與連續(xù)長度碼的有效測試數(shù)據(jù)壓縮和解壓[J].計算機學報,2004,27(4):528~53.