xxy811225
級別: *
![]() |
圖片:
![]() H0568=8+6*16+5*256=1384 可是這個(gè)怎么算的 H8731=-30927? |
---|---|
|
xxy811225
級別: *
![]() |
原碼、反碼、補碼在其BCD碼前有一個(gè)符號位,“0 ”表示正數,“1”表示負數 正數的原碼、反碼、補碼值跟其BCD碼一致,在BCD碼前加符號位0 例 [H0568]B=0101 0110 1000 [0101 0110 1000]原=[0101 0110 1000]反=[0101 0110 1000]補=0 0101 0110 1000 負數的原碼在其BCD碼前加符號位“1”;反碼將其BCD碼求反(求反即1變0,0變1),然后在其前加符號位“1”;原碼是將其BCD碼求反+1,最后在其前面加符號位“1”,或者說(shuō)在反碼基礎上+1(這種算法不正規,但結果是正確的). 我們以H8731為例 因為題目提到在用BCD或十六進(jìn)制比較時(shí),最高位(在這里是b15)為1時(shí),將作為負的BCD值進(jìn)行比較 [H8731]原=1000 0111 0011 0001 最高位為1,所以是負數 [H8731]B=-000 0111 0011 0001 [H8731]反=1111 1000 1100 1110 [H8731]補=1111 1000 1100 1111=[H-78CF]=-[7*4096+8*256+12*16+15]=-30927 BCD碼有8421、余3碼、2421碼、5211碼、余3循環(huán)碼等形式。這里(通常)用的是8421碼。 在計算機中的數據都是以補碼存放的,這一點(diǎn)也是值得注意的,謝謝2樓的提示。 [ 此貼被xxy811225在2007-10-21 18:37重新編輯 ] |
---|---|
|
xxy811225
級別: *
![]() |
在轉兩張講相關(guān)話(huà)題的兩張貼 在修改游戲過(guò)程中,大家可能會(huì )產(chǎn)生一點(diǎn)疑問(wèn),一字節數據可表示的范圍是0--255,那么負數又怎么表示呢?原來(lái)在計算機中是這樣規定的,用一個(gè)數的最高一位表示正負,0為正,1為負.如0111,1111轉換為十進(jìn)制為127,1111,1111為-127,由此我們知一字節的范圍為-127--127,其他字節的范圍類(lèi)推. 上面講的都是原碼表示法,可在計算機中的數據都是以補碼存放的,只有這樣才能減輕cpu的負擔.提到補碼,就不得不提反碼了.計算機中是這樣規定反碼的,如果是正數,則按原碼形式不變,如127仍為0111,1111;而如果為負數則,第一位為1,其他各位取反(即0變?yōu)?,1變?yōu)?),如原碼-127(1111,1111),表示為1000,0000. 補碼同上,如果是正數,則按原碼形式不變,如127仍為0111,1111;如果為負數則除第一位為1外,其他各位取反加1,如-127,先取反為1000,0000,然后加1,為1000,0001.但1000,0000比較特殊,用它來(lái)表示-128,由此我們知補碼可表示的范圍是-128--127。 上面這種方法是我們通用的。 下面這種方法,我們通常不用,講這種方法的書(shū)也不多,電子科大出版的《脈沖與數字電路-何緒凡 》里有講。 原碼、反碼、補碼的定義 1、原碼的定義 ①小數原碼的定義 [X]原 =[X 0≤X <1 [1- X -1 < X ≤ 0 例如: X=+0.1011 , [X]原= 01011 X=-0.1011 [X]原= 11011 ②整數原碼的定義 [X]原 =[X 0≤X <2n [ 2n-X - 2n < X ≤ 0 2、補碼的定義 ①小數補碼的定義 [X]補 =[X 0≤X <1 [2+ X -1 ≤ X < 0 例如: X=+0.1011, [X]補= 01011 X=-0.1011, [X]補= 10101 ②整數補碼的定義 [X]補 =[X 0≤X <2n [2n+1+X - 2n ≤ X < 0 3、反碼的定義 ①小數反碼的定義 [X]反 =[ X 0≤X <1 [2-2n-1-X -1 <X ≤ 0 例如: X=+0.1011 [X]反= 01011 X=-0.1011 [X]反= 10100 ②整數反碼的定義 [X]反 =[ X 0≤X <2n [2n+1-1-X - 2n < X ≤ 0 4.移碼:移碼只用于表示浮點(diǎn)數的階碼,所以只用于整數。 ①移碼的定義:設由1位符號位和n位數值位組成的階碼,則 [X]移=2n + X -2n≤X ≤ 2n 例如: X=+1011 [X]移=11011 符號位“1”表示正號 X=-1011 [X]移=00101 符號位“0”表示負號 ②移碼與補碼的關(guān)系: [X]移與[X]補的關(guān)系是符號位互為反碼, 例如: X=+1011 [X]移=11011 [X]補=01011 X=-1011 [X]移=00101 [X]補=10101 ③移碼運算應注意的問(wèn)題: ◎對移碼運算的結果需要加以修正,修正量為2n ,即對結果的符號位取反后才是移碼形式的正確結果。 ◎移碼表示中,0有唯一的編碼——1000…00,當出現000…00時(shí)(表示-2n),屬于浮點(diǎn)數下溢。 |
---|---|
|