如果機器字長為n,那麼乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位:正數為0,負數為1。剩下的n-1位表示概數的絕對值。
例如: x=+101011 , [x]原= 00101011 x=-101011 , [x]原= 10101011
位數不夠的用0補全。
ps:正數的原、反、補碼都一樣:0的原碼跟反碼都有兩個,因為這裡0被分為+0和-0。[+0]原= 0 0000000 , [-0]原= 1 0000000
知道了什麼是原碼,那反碼就更是張飛吃豆芽——小菜一碟了。知道了原碼,那麼你只需要具備區分0跟1的能力就可以輕鬆求出反碼,為什麼呢?因為反碼就是在原碼的基礎上,符號位不變其他位按位取反(就是0變1,1變0)就可以了。
例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100
[+0]原= 0 0000000 , [-0]原= 1 1111111
補碼也非常的簡單就是在反碼的基礎上按照正常的加法運算加1。例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100,[x]補=11010101
ps:0的補碼是唯一的,如果機器字長為8那麼[0]補=00000000。[+0]原= 0 0000000 , [-0]原= 0 0000000 ,所以正負0的補碼相同
移碼最簡單了,不管正負數,只要將其補碼的符號位取反即可。例如:x=-101011 , [x]原= 10101011 ,[x]反=11010100,[x]補=11010101,[x]移=01010101[+0]原= 1 0000000 , [-0]原= 1 0000000 ,所以正負0的補碼相同
原碼,補碼,反碼,移碼
為什麼有這些碼 定義機器字長為n,若數值x是純整數 若數值x是純小數,對純小數的原碼計算是先將其轉換為二進位制 必須的 例 若機器字長為8,則 1 原 0 0000001 1 原 1 0000001 7 原 0 0000111 127 0 1111111 127 原 1 1111111 7 原 1 ...
原碼,反碼,補碼,移碼
移碼 又叫增碼 是符號位取反的補碼,先將符號位取反,再取補碼,意思就是正數只將 變為1,負數將 變為0,再取補 x 1011 x 移 11011 符號位 1 表示正號 x 1011 x 移 00101 符號位 0 表示負號 一般用做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。一 原碼 求...
原碼 反碼 補碼 移碼
本人是初學者一枚,寫下筆記分享自己的一些見解,若有錯誤之處希望各位大神多多海涵,並請指出理解有誤的地方,謝謝 先確定用多少位元組儲存資料,假設這裡是1bytes 8bits,再把資料轉換為2進製的表達形式,把2進製的首位 最高位 最左的那一位作為符號位,0代表正數 1代表負數 十進位制數值中的 1轉...