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