漢字的字形存在於字型檔中,即便在今天,16點陣的字型檔也仍然使用廣泛。
16點陣的字型檔把每個漢字看成是16x16個畫素資訊。並把這些資訊記錄在位元組中。
乙個位元組可以儲存8位資訊,用32個位元組就可以存乙個漢字的字形了。
把每個位元組轉為2進製表示,1表示墨跡,0表示底色。每行2個位元組,
一共16行,布局是:
第1位元組,第2位元組
第3位元組,第4位元組
....
第31位元組, 第32位元組
這道題目是給你一段多個漢字組成的資訊,每個漢字用32個位元組表示,這裡給出了位元組作為有符號整數的值。
題目的要求隱藏在這些資訊中。你的任務是復原這些漢字的字形,從中看出題目的要求,並根據要求填寫答案。
這段資訊是(一共10個漢字):
404
0404
32-1-
164324
324324
324328
3283216
3416
343230-
6401664
1664
3468
12712666-
12467466
466-124
126100
6636664
664664
1264
6640016
4040
40432
-1-16
432432
432432
432832
8321634
1634
3230-64
00-12864-
12848
-128178
1-42
888016
643264-
326432-
9632-96
3316348
3614404
4030
1004
-1-2
40416
7-84
164164
168168
1616
1632-96
6464
1664
207262-
473325
161063
-810
-1-2
064080
63-88
644641
640-128016
63-81
0101
014-
1-21
0101
0101
0101
0502
0202
07-16
832246437-
1282
-12812-
128113-4
281216
183233-
641014
011201
0101
09329
1617
1217433
1665161
321640
-12810
20120
112000
007-
1624
2448
1256120
560-32
0-640
-12800
001-
1283-64
1-1280
0
負數在計算機中是用補碼的形式儲存的,正數在計算機中是用原碼的形式儲存的。
正數求原碼直接將十進位制轉二進位制即可,負數的補碼是在原碼的基礎上除符號位外其餘位取反後+1。
但是用這種方式求負數補碼用程式設計實現不太方便,下面介紹一種用程式設計實現起來較簡便的求負數補碼的方法:
求出負數絕對值的原碼
從原碼的最後一位數碼位往前數,當遇到第乙個1時停在此位置
將第乙個1前面的數碼全部求反
比如:(字長為8位)
求-127的補碼:
127的原碼: 01111111
-127的補碼: 10000001
求-80的補碼:
80的原碼: 01010000
-80的補碼: 10110000
求-1的補碼:
1的原碼: 00000001
-1的補碼: 11111111
這種方式用程式設計實現起來比較方便,在原碼的基礎上除符號位外其餘位取反後+1的方式要考慮進製。
#include
#include
int arr[8]
;void
exchange
(int value)
//轉2進製函式
if(value<0)
//負數求補碼
break;}
}}}int
main()
}return0;
}
補碼的求法以及八位二進位制補碼所能表示的數的範圍
補碼用來解決整數的儲存問題,整數在計算機中是以二進位制的補碼形式進行儲存的,求十進位制對應的二進位制補碼 1求正整數的二進位制補碼 正整數的二進位制補碼與其二進位制原碼相同,2 求負整數的二進位制補碼 先求與該負數相對應的正整數的二進位制 然後所有位取反加1,不夠位數時左邊補1,例如,求 3的二進位...
海明碼(漢明碼)的工作機制
一 海明碼的形成方式 1 首先海明碼是由資訊位和校驗位組成的 2 資訊位校驗位的關係 校驗位的位數r 資訊位的位數i 2 r 1 i r 3 校驗位的位置是2的整數次方 如 1 2 4 8 4 海明碼位數分組 因為海明碼其實是分組的奇偶校驗碼,所以有個分組的概念 1 1 3 5 7 2 2 3 6 ...
漢明碼或者海明碼的計算或者糾錯
設k為有效資訊的位數,r為校驗位的位數,則整個碼字的位數n應滿足不等式 n k r 2r 1 是2的r次方 若要求海明碼能檢測出2位錯誤,則再增加1位校驗位。例如 二進位制編碼位10101100,共8位所以k 8,可以得出校驗位r的位數為4位。位號 1 n 是那些權值為2的那些位,即2 0 2 1 ...