亂七八糟。按專業(yè)角度說,為了解決把二進制整數(shù)減法(或負數(shù)運算)轉(zhuǎn)換成加法來算的問題(所以你只聽過累加器,而沒有累減器),就發(fā)明了原碼,反碼,補碼。比如一個-2,假設它是八位長度的,原碼就是10000010,最高位1表示這是一個負數(shù)。反碼是11111101,就是除符號位以外把原碼各位都取反。補碼就是反碼加1,即11111110。正數(shù)2的補碼規(guī)定為自身,即00000010?,F(xiàn)在把兩個數(shù)的補碼相加,11111110+00000010=100000000。前面我們已假設是在八位字長的環(huán)境下運算,現(xiàn)在算出了九位,這樣就溢出了,即在八位環(huán)境下看,第九位的1是不存在的,結(jié)果是00000000,即0。這和我們算2-2的結(jié)果是一樣的,這就實現(xiàn)了把減法轉(zhuǎn)為加法。另外,java還規(guī)定了幾個運算,把二進制數(shù)作與,或,非,異或,移位等運算,這些都與上面說的三種碼沒有直接關(guān)系,不要弄混了
創(chuàng)新互聯(lián)是專業(yè)的橫山網(wǎng)站建設公司,橫山接單;提供網(wǎng)站建設、網(wǎng)站設計,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行橫山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
我是這么理解的,如果按你說的,根據(jù)這種情況書上說兩個衣服串相等時是false不等時是true說明!是先起作用的,也就是說先取反后進行比較,因為equals是判斷前后是否相等,所以如果兩個字符串相同,前面取反就是false
代碼如下:
import java.util.Scanner;
public class Test {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println(x+"的相反數(shù)為 : " + (0-x));
}
}
代碼如下:
import?java.util.Scanner;
public?class?Test?{
public?static?void?main(String?[]?args){
Scanner?sc?=?new?Scanner(System.in);
int?x?=?sc.nextInt();
System.out.println(x+"的相反數(shù)為?:?"?+?(0-x));
}
}
在2進制中,負數(shù)是以它正值的補碼形式表達
原碼:一個整數(shù),按照絕對值大小轉(zhuǎn)換成的二進制數(shù),稱為原碼。
比如
0000
0000
0000
0000
0000
0000
0000
0101是
5的
原碼。
反碼:將二進制數(shù)按位取反,所得的新二進制數(shù)稱為原二進制數(shù)的反碼。
取反操作指:原為1,得0;原為0,得1。(1變0;
0變1)
比如:將5的二進制表達式的每一位取反,得
1111
1111
1111
1111
1111
1111
1111
1010
稱:1111
1111
1111
1111
1111
1111
1111
1010
是
0000
0000
0000
0000
0000
0000
0000
0101
的反碼。
反碼是相互的,所以也可稱:
1111
1111
1111
1111
1111
1111
1111
1010
和
0000
0000
0000
0000
0000
0000
0000
0101
互為反碼。
補碼:反碼加1稱為補碼。
也就是說,要得到一個數(shù)的補碼,先得到反碼,然后將反碼加上1,所得數(shù)稱為補碼。
那么,5的補碼為:
1111
1111
1111
1111
1111
1111
1111
1010
+
1
=
1111
1111
1111
1111
1111
1111
1111
1011
所以,-5
在計算機中的二進制表達為:
1111
1111
1111
1111
1111
1111
1111
1011
轉(zhuǎn)換為十六進制:0xFFFFFFFB。
====================================
明白了上面的就可以理解怎么求
~i
了
int型儲存32個二進制位,~這個符號是按位取反,就是求i的反碼。
即得到1111
1111
1111
1111
1111
1111
1111
1010
上面這串二進制代表一個負數(shù),將它轉(zhuǎn)換成int型過程如下:
1111
1111
1111
1111
1111
1111
1111
1010-1
=
1111
1111
1111
1111
1111
1111
1111
1001
再求反:
0000
0000
0000
0000
0000
0000
0000
0110
這個值就是5的按位取反所得到的int整數(shù)的絕對值(注意:5按位取反得到的是負數(shù))
所以轉(zhuǎn)換為int型為:6
即:int型的i=5
取反后的結(jié)果為-6