簡體   English   中英

Java.math.BigInteger.and()如何工作?

[英]How does Java.math.BigInteger.and() work?

根據本教程 ,使用值6和3調用.and()時,Java.math.BigInteger.and()的結果為2。這是如何工作的? 它既不連接也不添加。

邏輯按位與運算

6 = 110b (b表示二進制)
3 = 011b

110b & 011b = 010b = 2

AND真值表為2輸入

在此處輸入圖片說明

所以對於兩個整數3和4

3 = 011b
4 = 100b

b表示以2為底。

3&4 = 011&100.的和運算3&4 = 011&100.

所以對每個位位置應用AND真值表

1&0 = 0

1&0 = 0

0&1 = 1

實際上,我正在為這兩個號碼向MSB應用並操作LSB。

現在,引入了Biginteger class ,用於計算不適合long int原始數據類型的大數。

BigInteger將執行相同的操作,但是數量太大。

它的按位與運算。在您的問題中,給定的鏈接顯示為:

110 & 011 = 010
110 is the binary value of 6.
011 is the binary value of 3.

結果0102(decimal)的二進制。

它執行&(按位與)。 這意味着它將以二進制表示形式返回匹配的1。 例如,6是0110,3是0011,所以:6&3是0110&0011 = 0010 = 2

Java中的BigInteger與原始類型int和long相同,您在數值原始類型上執行的所有按位運算與BigInteger的and(),or(),xor()方法相同.BigInteger就像無限整數一樣,沒有固定值它的內存(例如int是4個字節,最小值是-2,147,483,648。(-2 ^ 31)最大值是2,147,483,647(含)。(2 ^ 31 -1))。BigInteger在內部存儲為

final int [] mag;

對於and()方法,如果您的BigInteger值大於int類型,它將添加到數組中。按位運算是在兩個輸入的整數數組之間進行的,例如您有兩個bigintegers x和y

它將像x.mag [0]和y.mag [0] x.mag [1]&y.mag [1]一樣進行計算。 最后,將它們各自返回的所有值相加並求和,得出最終值。最后,與按位運算符&,|;相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM