導航:首頁 > 編程語言 > java1取反0

java1取反0

發布時間:2023-02-27 08:20:17

1. 關於java 中取反問題

在2進制中,負數是以它正值的補碼形式表達
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。
比如
0000
0000
0000
0000
0000
0000
0000
0101是
5的
原碼。
反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。
取反操作指:原為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稱為補碼。
也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。
那麼,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
轉換為十六進制:0xFFFFFFFB。
====================================
明白了上面的就可以理解怎麼求
~i

int型儲存32個二進制位,~這個符號是按位取反,就是求i的反碼。
即得到1111
1111
1111
1111
1111
1111
1111
1010
上面這串二進制代表一個負數,將它轉換成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整數的絕對值(注意:5按位取反得到的是負數)
所以轉換為int型為:6
即:int型的i=5
取反後的結果為-6

2. java中按位取反運算的詳解

比如說byte類型的5,在內存中是00000101,按位取反後就是11111010
當你再次輸出這個數時就變成了250
按位取反就是1變0,0變1

3. java取反運算符

運算符的優先順序!高、
但是equals不是運算符、是個方法。
先計算方法的返回值,然後再!取值

4. java中按位取反運算的詳解

按位取反就是每一位都取反,所謂取反就是1變0,0變1
比如樓主說的10
二進製表示就是00000000
00000000
00000000
00001010
取反後就是11111111
11111111
11111111
11110101
這在十進制中就是-11
而他的二進制原碼表示就是-1011

5. java中取反操作是正數取反=正數+1取負 負數取反=負數+1取正,那麼-1取反是等於0嘛

無符號的32bit整型最大值的二進制編碼

有符號32bit二補碼編碼整內型的-1的二進制編碼
是一樣的..,就是說容有不少前提。
Java的int是有符號的,只有int被當成無符號的時候,比如轉成long的低32bit,
這時32bit最大值和和int的-1的二進制編碼一樣。

6. Java 取反運算符

用以下代碼可以實現你要求的功能:
long lang=64509;
String str1=Long.toBinaryString(lang);//將給定的數轉為二進制字串
String str2=Long.toBinaryString(~lang);//將給定的數取反轉為二進制字串
//將取反後的二進制串取最後的 長度與第一個串長度相等 的子串,這是我們需要的二進制串
String str=str2.substring(str2.length()-str1.length());
//將它轉換為十進制整數
int i=Integer.parseInt(str, 2);
System.out.println(i);

具體理論知識如下所示:
先要理解一些概念:
在2進制中,負數是以它正值的補碼形式表達
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。

比如 0000 0000 0000 0000 0000 0000 0000 0101是 5的 原碼。
反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。

取反操作指:原為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稱為補碼。
也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。
那麼,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
轉換為十六進制:0xFFFFFFFB。

====================================

明白了上面的就可以理解怎麼求 ~i 了
int型儲存32個二進制位,~這個符號是按位取反,就是求i的反碼。
即得到1111 1111 1111 1111 1111 1111 1111 1010
上面這串二進制代表一個負數,將它轉換成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整數的絕對值(注意:5按位取反得到的是負數)

所以轉換為int型為:6
即:int型的i=5 取反後的結果為-6

7. java編程 按位取反的問題

  1. 這個問題涉及到計算機內部的編碼。

對於整數,計算機內部用最高位表回示答符號位,0表示為正,1表示為負。

對於負數,為了便於計算,計算機用補碼來表示其值。

已經一個數的補碼,要知道其值分兩種情況:

1:符號位是0,正數,所以後面的二進制位則表示大小,即正數的原碼=其補碼。如1表示出來則為00000001(我這里用八位來表示,也可以用16位或32位)

2:符號位是1,負數,這時候需要把後面的數取反再加一(要問為什麼?查一下資料吧,可以根據補碼的特性推出來),所以11111110表示的數是1111110取反為0000001,再加1,則為0000002。算上符號位,就是-2。


以你的例子來說,

a=0=
~a=

符號位是1,後面的數取反再+1

=-1

8. JAVA中的按位取反什麼意思

按位取反
~ 01101101
10010010
結論:對二進制數按位取反,即0變成1,1變成0。

9. Java中取反是怎麼算的

5:00000101
取反:11111010
因為數在計算機里是用補碼形式存放的...所以要把11111010看做一段補碼
現在把補碼轉化為原版碼,第權一位是符號..不用變..先變成反碼..減1就可以..11111001
再變為原碼10000110,即-6
5&2
5:00000101
2:00000010
與就是各個位做與運算..
1&0=0
0&0=0
1&1=1
結果就是00000000

10. java取反問題

首先,long是64位,抄8位元組
計算機中存儲襲時高位補0,你取反後高位全部為1,所以是負值。

注意0xFFFFFFFF在Java中被認為是整形常量,所以他會被默認為int類型,32位的,在和long類型進行AND操作時,它會按照最高位(此時為1)進行擴展,即它被機器解釋成0xFFFFFFFF FFFFFFFF,這樣以來,你的temp等於沒有變化。

要想改變上面那種情況,你可以這樣寫Ox7FFFFFFF,這時最高位為0,被機器解釋成0x00000000 7FFFFFFF,AND操作會讓temp變成正

不過以上解決方法並不能達到你想要達到的效果,你想要的結果是不是:
只把temp的有效位進行取反,高位不變?

閱讀全文

與java1取反0相關的資料

熱點內容
壓縮好的文件哪裡找 瀏覽:831
百度網盤怎樣上傳文件夾 瀏覽:320
java發展是 瀏覽:892
程序編程結束還要做什麼 瀏覽:778
pcb打版文件有哪些 瀏覽:39
網路原來ip地址忘記了怎麼辦 瀏覽:142
iphone6s微信密碼設置 瀏覽:810
java將數字轉換成字母 瀏覽:854
c盤中的哪些是系統文件夾 瀏覽:668
分布式服務如何跨庫統計數據 瀏覽:829
力控轉發數據客戶端模式如何建立 瀏覽:200
怎麼樣讓自己的網站不被別人看到 瀏覽:711
編程擴展效果如何 瀏覽:335
榮耀暢玩手環同步qq 瀏覽:475
怎麼向sql中添加資料庫 瀏覽:596
錄歌失敗重啟app什麼意思 瀏覽:522
壓縮文件包怎麼在微信發送 瀏覽:432
mysql資料庫怎麼插入時間值 瀏覽:191
微信視頻不能轉發朋友圈 瀏覽:596
影視後期的app有哪些 瀏覽:956

友情鏈接