※ 引述《kimuro (有青我就是世界)》之銘言:
: 能不能教一下教授當天說的那個
: 以2為基準 有正負號又有補數的那個
: 那邊我弄不太懂
我們從四個位元說起...
0 0 0 0
0000 0001 0010 0011 0100 0101 0110 0111 <- 0 1 2 3 4 5 6 7
1000 1001 1010 1011 1100 1101 1110 1111 <- 8 9 a b c d e f
這十六個數字, 是 0000 能變化出來的所有數字, 分別是 0 ~ 15.
我以十六進位表示...
上面是正整數的部份...
那麼負數怎麼表示?
我們把 0000 最左邊那個位元(the most significant bit/the highest bit).
拿出來作正負號, 取 0 為正, 取 1 為負...
剩下三個位元, 則是取 1 的補數(complement)...
之所以要對一取補數, 是為了符合加法運算.
*************************************************************
補數也是數論裡頭的東西...
電腦裡頭的 1 的補數...
基本上牽扯到電腦要怎麼做加法運算, 才能得到加法的單位元素 0.
所以就交給數學系的去弄吧.
我們只要知道, 取 1 的補數, 就是把 0 變為 1, 1 變為 0.
*************************************************************
這樣就變化出下面這組數字...
0000 0001 0010 0011 0100 0101 0110 0111 <- 0 1 2 3 4 5 6 7
1111 1110 1101 1100 1011 1010 1001 1000 <- -0 -1 -2 -3 -4 -5 -6 -7
也就是正負七之間, 共『十五』個數字.
少一個是因為 0000 == 1111, 都是零...
這樣蠻浪費的.
於是有 2 的補數, 也就是取 1 的補數之後再加 1.
(這個運算一樣是數學問題, 請用背的! )
0000 0001 0010 0011 0100 0101 0110 0111 : 0 1 2 3 4 5 6 7
1111 1110 1101 1100 1011 1010 1001 1000 : -1 -2 -3 -4 -5 -6 -7 -8
麻煩自己拿紙筆算一下, 不然會看不懂...
ex: 1110 -> 負的
-> 去正負號得 110
-> 取 1 的補數得 001
-> 加 1 得到 2 的補數 010
所以, 1110 的值是 -2...
這是表示法...
另外還有加法.
老師則是把四個位元擴充成八個位元...
--
新詩練習:新鮮。踩破初春裡的狗大便;不經意的滄桑,滿溢著嫩黃的喜悅。
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 61.224.161.213