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