關於計算機的源碼 反碼、補碼其實都是越搞越復雜,聽課聽了很久后逛論壇發現一個帖子寫的很好 但是不記得鏈接了
反正大致意思就是最開始 就沒有源碼反碼補碼的概念,
計算機實際上是不會做減法運算的,他所有的計算都是基於加法的,最開始的計算機就是加法機
做的減法運算都是 變成了加上一個數字的負數,,然而計算機怎么表示一個負數叻,,
假如我們有一個八位的計算機,,
他的表示范圍為0000 0000---1111 1111
如果要他表示-128-127 還是256個數字
那么計算機會讓0000 0000--0111 1111 0-127 表示0-127
而1000 0000--1111 1111 1 128--256表示 -128 --- -1
所以在計算機中的減法運算都是 加上一個負數。
由於整數第一位都是0而負數第一位都是1所以后面就出了一個符號位的概念,,
我們看看下面一組數據
0和-1 0000 0000 1111 1111
1和-2 0000 0001 1111 11110
10和-11 0000 1010 1111 0101
看到這些數據,又因為一些人找出了一些亂七八糟的規律就有了源碼反碼補碼的概念(學這個的時候把我差點搞死!)
他們的二進制碼相加正好等於1111 1111 255 由於他們的二進制碼正好相反 所以有了個名字 反碼
-1 的絕對值1 ,二進制碼為0000 0001,他們把他叫做源碼,,每位取反1111 1110叫做反碼,最后加上1后的1111 1111二級制叫做補碼,這個二進制碼就是實際上計算機的存值。
感覺學習這個 最開始就應該把自己以前的數學知識全忘掉,把自己當成一台計算機,,那么就能很好的理解計算機減法的原理,,