明碼(補碼的求法)

2021-10-09 22:47:03 字數 2479 閱讀 6737

漢字的字形存在於字型檔中,即便在今天,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 ...