天天看點

取反(~)和相反數 是不一樣的!!!

這幾天正在看補碼的問題,發現這個東西實在是太神奇了,

在計算機存儲的都是按照補碼的方式,這樣的方式可以進行計算,但是除了補碼還有原碼和反碼

他們雖然都可以表示數字,但是原碼和反碼不能進行計算,就是不符合計算規則,怎麼使用都是不行的

這個時候就出現了,補碼的規則,這種規則可以讓計算幾中的數字進行計算,簡單的說就是

讓兩個相反數相加結果為0,按照補碼的規則是可以行的通的。

在這裡我就要簡單的說一下,取反操作和一個數字的相反樹,這兩個操作是不一樣的,

他們之間是有差別的:

什麼是取反操作呢,簡單的講在計算中我們都是知道任何數字還是字元都是以二進制形式存在的。

取反的操作就是在寫變量名之前加上一個(~)符号之後就是進行的取反操作,他是把二進制中1 變成 0,0 變成 1

由于二進制中除了1 就是 0 ,是以,可以這樣的操作。

什麼是相反數呢 ?

國小的時候自己有沒有給一個數字進行相反數的操作,這樣的例子實在是太多了,但是在計算機中是不一樣的操作

首先你要明白,如何表示負數,這個負數的概念在一開始學習變成語言的時候我是不明白的,在後來的學習的過程中

我清楚的知道了,這個負數和整數的儲存是有差別,

例如:

一個 變量裡 存放了一個 數字 3

請問他的二進制形式是多少呢 ?

這樣的問題在一開始學習程式設計語言的時候經常的遇到

答案就是 :0000 0011

但是你有沒有想過 -3 是什麼樣的二進制 :

要想知道-3在計算機中的二進制形式也是非常簡單的:

隻要把他進行按位計算就可以一個一個的輸出來

答案是 : 1111 1101

這就是-3的二進制表示形式,雖然在學校裡我們知道在二進制的最高位

是用來表示他們的符号的,簡稱符号位,但是你有沒有發現就算是最高位是1

但是其他位也不需要1這個數字了,為什麼出現了這樣的二進制形式呢?

答案就是他使用了 補碼表示法 :

在建立補碼表示法的時候,發現,如果給一個數字進行取反,然後在末尾加1之後在和原來的數字相加一定會等于0

是以,補碼表示法就這樣建立了。

利用補碼表示法就可以簡單的進行計算了,而且十分的簡單。