Re: 如何用程式寫2的補數呀!
|
||||
---|---|---|---|---|
新會員
|
数字逻辑电路是这样:补码=原码先取反再+1,
E2F7的补码就是10000-E2F7=1D09,也就是E2F7取反=1D08+1=1D09,E2F7取反的过程其实就是FFFF-E2F7=1D08,而10000=FFFF+1,所以最后要再加1,就是这样,应该明白了吧.
發表於: 2005/5/5 15:01
|
|||
|
Re: 如何用程式寫2的補數呀!
|
||||
---|---|---|---|---|
高級會員
|
直接用 0 去減, 就可以啦!
發表於: 2005/5/5 9:26
|
|||
|
Re: 如何用程式寫2的補數呀!
|
||||
---|---|---|---|---|
資深會員
|
如果你用的是pic18
高位元組執行COMF 低位元組執行NEGF 再檢查低位元組轉換後是否為0 如果是的話高位元組+1 5行程式完成...
發表於: 2005/5/4 10:26
|
|||
|
Re: 如何用程式寫2的補數呀!
|
||||
---|---|---|---|---|
版主
|
0x3700 --> 0xC8FF (1'S)
0xC8FF+0x01= 0xC900(2'S) 16bit 加法的進位而已。
發表於: 2005/5/3 22:23
|
|||
|
Re: 如何用程式寫2的補數呀!
|
||||
---|---|---|---|---|
初級會員
|
前面部分我可以了解,但是為什麼Low byte加1後等於0時,High Byte要加1呢?還是不太懂,可否更詳細說明呢?
謝謝 將 Hi Byte 與 Low Byte 分別 xor #0xFF 後得到 1'S 後再將結果 Low 加1 ,若Low Byte加一後等於零則 Hi Byte就加一,這樣就得到2'S
發表於: 2005/5/3 22:08
|
|||
|
Re: 如何用程式寫2的補數呀!
|
||||
---|---|---|---|---|
版主
|
將 Hi Byte 與 Low Byte 分別 xor #0xFF 後得到 1'S 的16-bit值後,再將結果 Low 加1 , 若Low Byte加一後等於零則 Hi Byte就加一,這樣就得到2'S
發表於: 2005/5/3 21:51
|
|||
|
如何用程式寫2的補數呀!
|
||||
---|---|---|---|---|
初級會員
|
請問各位,如果我有一筆數值,16進位值為
highbyte=E2 lowbyte =F7, 而我知道轉換的公式為 D=(NOT(E2F7)+1)=1D09 我要怎麼用組合語言寫讓E2F7會變成1D09呢? 謝謝
發表於: 2005/5/3 17:26
|
|||
|