liuxianhua
級(jí)別: 論壇先鋒
|
書上說16位數(shù)據(jù)寄存器的最高為符號(hào)位,0為正數(shù)1為負(fù)數(shù),正數(shù)的最大值為32767,負(fù)數(shù)的最大值為-32768,這我就不明白了,除了符號(hào)位外,其他15位都為1時(shí),加起來是32767,為什么負(fù)數(shù)能儲(chǔ)存最高數(shù)是-32768呢?懇請(qǐng)高手指點(diǎn),謝謝,謝謝!! |
---|---|
|
qlin
學(xué)過一點(diǎn)FX型PLC基本知識(shí)
級(jí)別: 家園常客
|
在《自學(xué)自會(huì)PLC指令——三菱FX2N編程技術(shù)及應(yīng)用》一書中有講解。 主要含意是:內(nèi)部數(shù)據(jù)的負(fù)數(shù),是用補(bǔ)碼表示的;好像是,H8000對(duì)應(yīng)-32768,記不太準(zhǔn)了。 具體的,可以做指令試驗(yàn),幫助理解。 |
|
---|---|---|
|
zhaoyang4505
級(jí)別: *
|
樓上正解。 正數(shù)的補(bǔ)碼與原碼相等;負(fù)數(shù)的補(bǔ)碼 = 反碼+1。 |
---|---|
|
liuxianhua
級(jí)別: 論壇先鋒
|
關(guān)于原碼、反碼、補(bǔ)碼以前也學(xué)過,現(xiàn)在都忘了,連書都找不到了,能不能請(qǐng)教下大蝦:+5的二進(jìn)制的原碼、反碼、補(bǔ)碼是多少?-5的原碼、反碼、補(bǔ)碼又是多少?謝謝,不勝感激!! |
---|---|
|
ljc2008
一學(xué)到老
級(jí)別: 家園常客
|
原碼就是指用純二進(jìn)制編碼表示的二進(jìn)制數(shù),而補(bǔ)碼就是對(duì)原碼進(jìn)行按位求反,再加1后的二進(jìn)制數(shù)。 +5的二進(jìn)制的原碼是 0000 0000 0000 0101 反碼是 1111 1111 1111 1010 補(bǔ)碼是 1111 1111 1111 1011 純二進(jìn)制編碼只能表示正整數(shù),而正、負(fù)數(shù)僅是利用原碼,補(bǔ)碼來表示的二進(jìn)制編碼,因此,負(fù)數(shù)不存在什么原碼,來表示 -5的補(bǔ)碼表示 1111 1111 1111 1011 |
---|---|
本帖最近評(píng)分記錄: |
liuxianhua
級(jí)別: 論壇先鋒
|
謝謝樓上的各位大蝦,總算明白一些了,就是搞不懂補(bǔ)碼為什么會(huì)比原碼多表示一位? |
---|---|
|
25188400
學(xué)習(xí)!!從點(diǎn)滴做起!!!
級(jí)別: 略有小成
|
都是高手呀。~學(xué)習(xí)學(xué)習(xí)~~ |
---|---|
|
sjm213
有小知識(shí),無大學(xué)問。
級(jí)別: 論壇版主
|
正數(shù)原碼與反碼、補(bǔ)碼一致; 負(fù)數(shù)反碼是將其原碼除符號(hào)位之外的各位求反,補(bǔ)碼是將反碼加1。 所以4樓的解釋是有問題的。 -5的二進(jìn)制的原碼是 1000 0000 0000 0101 反碼是 1111 1111 1111 1010 補(bǔ)碼是 1111 1111 1111 1011 ---------------------------------------------------------------------------------------------- 以下轉(zhuǎn)載,解釋有符號(hào)的數(shù)范圍為何是-(n+1)~n: 為什么要設(shè)立補(bǔ)碼呢? 第一是為了能讓計(jì)算機(jī)執(zhí)行減法: [a-b]補(bǔ)=a補(bǔ)+(-b)補(bǔ) 第二個(gè)原因是為了統(tǒng)一正0和負(fù)0 正零:00000000 負(fù)零:10000000 這兩個(gè)數(shù)其實(shí)都是0,但他們的原碼卻有不同的表示。 但是他們的補(bǔ)碼是一樣的,都是00000000 特別注意,如果+1之后有進(jìn)位的,要一直往前進(jìn)位,包括符號(hào)位!(這和反碼是不同的!) [10000000]補(bǔ) =[10000000]反+1 =11111111+1 =(1)00000000 =00000000(最高位溢出了,符號(hào)位變成了0) 有人會(huì)問 10000000這個(gè)補(bǔ)碼表示的哪個(gè)數(shù)的補(bǔ)碼呢? 其實(shí)這是一個(gè)規(guī)定,這個(gè)數(shù)表示的是-128 所以n位補(bǔ)碼能表示的范圍是 -2^(n-1)到2^(n-1)-1 比n位原碼能表示的數(shù)多一個(gè) |
---|---|
本帖最近評(píng)分記錄: |
蘇目
級(jí)別: 探索解密
|
最高位為是1,其余十五位為0時(shí),即為32768,因?yàn)椴淮嬖谪?fù)0. |
---|---|
|
pretco123
不為失敗找理由,只為成功找方法
級(jí)別: 論壇先鋒
|
略懂點(diǎn)了!那么表示一個(gè)負(fù)數(shù)等于兩部分,要用反碼和補(bǔ)碼來表示。數(shù)字范圍是-32767~32767中。。。正數(shù)加1也是正數(shù),負(fù)數(shù)減1就等于加上一個(gè)(-1)表示負(fù)數(shù)必需是將表示符號(hào)的最高位置1。 例:00000000-1 =00000000+(-1) =11111111 =10000001 請(qǐng)問各位高手是不是這樣的?請(qǐng)指教!怎么搞到自己好象有點(diǎn)亂了! |
---|---|
|