Tag: biginteger

使用Java中的BigIntegers进行BitShifting

我正在使用BigIntegers在Java中实现DES加密。 我通过使用BigInteger.leftShift(int n)方法将Java二进制密钥与Java BigIntegers一起移位。 N(Kn)的关键取决于Kn-1的移位结果。 我得到的问题是,我在每个键生成后打印出结果,并且移位不是预期的输出。 密钥分为2 Cn和Dn(分别为左和右)。 我特意尝试这个:“要做左移,将每个位移到左边一个位置,除了第一个位,循环到块的末尾。” 根据转变,它似乎最终会对O进行攻击。 不知道如何纠正这个问题。 结果: c0:11110101010100110011000011110 d0:11110001111001100110101010100 c1:111101010101001100110000111100 d1:111100011110011001101010101000 c2:11110101010100110011000011110000 d2:11110001111001100110101010100000 c3:1111010101010011001100001111000000 d3:1111000111100110011010101010000000 c4:111101010101001100110000111100000000 d4:111100011110011001101010101000000000 c5:11110101010100110011000011110000000000 d5:11110001111001100110101010100000000000 c6:1111010101010011001100001111000000000000 d6:1111000111100110011010101010000000000000 c7:111101010101001100110000111100000000000000 d7:111100011110011001101010101000000000000000 c8:1111010101010011001100001111000000000000000 d8:1111000111100110011010101010000000000000000 c9:111101010101001100110000111100000000000000000 d9:111100011110011001101010101000000000000000000 c10:11110101010100110011000011110000000000000000000 d10:11110001111001100110101010100000000000000000000 c11:1111010101010011001100001111000000000000000000000 d11:1111000111100110011010101010000000000000000000000 c12:111101010101001100110000111100000000000000000000000 d12:111100011110011001101010101000000000000000000000000 c13:11110101010100110011000011110000000000000000000000000 d13:111100011110011001101010101000000000000000000000000000000 c14:1111010101010011001100001111000000000000000000000000000 d14:1111000111100110011010101010000000000000000000000000000 c15:11110101010100110011000011110000000000000000000000000000 d15:111100011110011001101010101000000000000000000000000000000000

无论如何要从Double转换为BigInteger?

反正有没有从double值转换为BigInteger ? double doubleValue = 64654679846513164.2; BigInteger bigInteger = (BigInteger) doubleValue; 我尝试施放它但它不起作用。

java中BigInteger的%运算符

如何使用大整数a%b ? 喜欢 … BigInteger val = new BigInteger(“1254789363254125”); … boolean odd(val){ if(val%2!=0) return true; return false; … Eclipse表示对于BigInteger来说,运算符%是未定义的。 有任何想法吗?

BigInteger大部分时间都是优化乘法

嗨我想以最及时优化的方式乘以2大整数。 我目前正在使用karatsuba算法。 任何人都可以建议更优化的方式或算法来做到这一点。 谢谢 public static BigInteger karatsuba(BigInteger x, BigInteger y) { // cutoff to brute force int N = Math.max(x.bitLength(), y.bitLength()); System.out.println(N); if (N <= 2000) return x.multiply(y); // optimize this parameter // number of bits divided by 2, rounded up N = (N / 2) + (N % 2); // x = a […]

如何使用BigInteger类在Java中生成随机n位整数?

我不确定如何使用BigInteger类在Java中生成随机n位整数。

使用BigInteger Multiply运算符

我想知道是否有办法将BigInteger变量相乘,因为*运算符不能应用于BigInteger 。 所以我想知道是否可以在不使用*运算符的情况下将两个BigIntegers相乘。

BigInteger到byte

我需要将Java BigInteger实例转换为以字节为单位的值。 从API中,我得到了这个方法toByteArray() ,它返回一个包含这个BigInteger的二进制补码表示的byte []。 由于我的所有数字都是正128位(16字节)整数,所以我不需要2位补码forms给我128位+符号位(129位)…… 有没有办法直接从BigInteger获得标准(没有二进制补码forms)表示? 如果没有,我怎么能正确移位整个byte [17]数组以丢失符号位以获得一个byte [16]数组?

Long vs BigInteger

我知道java.lang.Long和java.math.BigInteger都可以包含非常大的自然数。 我也知道Long的最大值,但BigInteger的最大值是多少? 除了容量之外,BigInteger在处理仍然落在Long范围内的一般大整数时会表现得更好吗? 题 唯一的考虑因素是:我的价值对于龙来说太大了吗?

通常大数字变为负数

自从我开始使用eclipse作为项目euler以来,我注意到大数字有时会变成看似随机的负数。 我想这与传递类型的boudry有关。 如果你能向我解释这些负数是如何产生的,以及它背后的逻辑是什么,我将很高兴。 另外,我怎样才能避免它们(最好不要使用BigInteger类)。 丹科!=)

如何在java中添加任意长度的两个数字?

如何在java中添加任意长度的两个数字? 比如说,在java中长度是64位。 所以最大范围是-9223372036854775808到9223372036854775807.我是对的吗? 因此,如果我们想要添加一个比下面更大的数字,我得到一个错误 “整数太大” 长a = 9223372036854775807L; 长b = 9223372036854775808L; 在C中,我们可以将这些数字作为char数组,通过遍历每个char的地址并使用一些数据结构,我们可以添加任意大小的两个数字。 怎么做java。 我们可以遍历String中每个字符的地址。 谢谢你的回复。 我试图通过将数字作为字符串传递并从末尾添加每个字符来进行编码。 这对我来说可以。 使用BigInteger和我在上面指定的方法添加两个非常大的数字之间有什么大的区别(从结尾添加每个字符并在临时变量中存储余数并继续)。 BigInteger的基础机制是否与我的代码相同(从末尾添加每个字符)? 谢谢。