Java.math.BigInteger.and() 是如何工作的?
How does Java.math.BigInteger.and() work?
根据 this tutorial,当调用 .and() 的值为 6 和 3 时,Java.math.BigInteger.and() 的结果是 2。这是如何工作的?它既不是连接也不是添加。
6 = 110b
(b表示二进制)
3 = 011b
110b & 011b = 010b = 2
它是按位 operation.In 你给出的问题 link 表明,
110 & 011 = 010
110 is the binary value of 6.
011 is the binary value of 3.
结果010
是2(decimal)
的二进制。
它执行 &(按位与)。这意味着它 returns 二进制表示中匹配的 1。
例如,6 是 0110,3 是 0011 所以:
6 & 3 是 0110 & 0011 = 0010 = 2
java 中的 BigInteger 与原始类型 int 相同,long.All 您对数字原始类型执行的按位运算与 and()、or()、xor() 方法相同BigInteger.BigInteger 就像无限整数一样,没有固定的内存
(例如 int 是 4 个字节 最小值为 - 2,147,483,648.(-2^31) 最大值为 2,147,483,647(含).(2^31 -1))。您的 BigInteger 在内部存储为
最终整数[] mag;
对于and()方法
如果您的 BigInteger 值大于 int 类型,它将添加到 array.Bitwise 操作在两个输入的整数数组之间完成,例如您有两个大整数 x 和 y
它会这样计算
x.mag[0] & y.mag[0]
x.mag[1] & y.mag[1]
.
.
将每个返回的所有值相加并求和,最终得到 value.Finally 与按位运算相同 &,|;
AND Truth table 跟随 2 个输入
所以对于两个整数 3 和 4
3 = 011b
4 = 100b
b 表示以 2 为基数。
3&4 = 011&100.
的和运算
所以对我们得到的每个位位置应用 AND truth table
1&0 = 0
1&0 = 0
0&1 = 1
实际上,我正在为两个数字应用和操作 LSB 到 MSB。
现引入Biginteger class
用于计算不适合原始数据类型的大数long int
。
BigInteger
将执行相同的操作,但对于太大的数字。
根据 this tutorial,当调用 .and() 的值为 6 和 3 时,Java.math.BigInteger.and() 的结果是 2。这是如何工作的?它既不是连接也不是添加。
6 = 110b
(b表示二进制)
3 = 011b
110b & 011b = 010b = 2
它是按位 operation.In 你给出的问题 link 表明,
110 & 011 = 010
110 is the binary value of 6.
011 is the binary value of 3.
结果010
是2(decimal)
的二进制。
它执行 &(按位与)。这意味着它 returns 二进制表示中匹配的 1。 例如,6 是 0110,3 是 0011 所以: 6 & 3 是 0110 & 0011 = 0010 = 2
java 中的 BigInteger 与原始类型 int 相同,long.All 您对数字原始类型执行的按位运算与 and()、or()、xor() 方法相同BigInteger.BigInteger 就像无限整数一样,没有固定的内存 (例如 int 是 4 个字节 最小值为 - 2,147,483,648.(-2^31) 最大值为 2,147,483,647(含).(2^31 -1))。您的 BigInteger 在内部存储为
最终整数[] mag;
对于and()方法 如果您的 BigInteger 值大于 int 类型,它将添加到 array.Bitwise 操作在两个输入的整数数组之间完成,例如您有两个大整数 x 和 y
它会这样计算 x.mag[0] & y.mag[0] x.mag[1] & y.mag[1] . . 将每个返回的所有值相加并求和,最终得到 value.Finally 与按位运算相同 &,|;
AND Truth table 跟随 2 个输入
所以对于两个整数 3 和 4
3 = 011b
4 = 100b
b 表示以 2 为基数。
3&4 = 011&100.
所以对我们得到的每个位位置应用 AND truth table
1&0 = 0
1&0 = 0
0&1 = 1
实际上,我正在为两个数字应用和操作 LSB 到 MSB。
现引入Biginteger class
用于计算不适合原始数据类型的大数long int
。
BigInteger
将执行相同的操作,但对于太大的数字。