【发布时间】:2018-11-09 02:32:10
【问题描述】:
- 在 Random 类中,定义返回原始类型值的 nextByte 方法 字节。在一系列调用中返回的值应该均匀分布在所有 类型中的可能值。
- 在 Random 类中,定义一个 nextInt 方法,该方法返回原始类型的值 诠释。在一系列调用中返回的值应该均匀分布在所有可能的 类型中的值。 (提示:Java 要求实现对整数使用二进制补码表示。 弄清楚如何从四个随机字节计算随机二进制补码表示 值使用 Java 的移位运算符。)
您好,我可以完成第 3 部分,现在我需要使用 3. 来解决 4. 但我不知道该怎么做。我正在考虑使用 nextByte 来制作一个 4 字节的数组,然后我会对每个字节取二进制补码,这样我就不会有负数,然后我会将它们放在一个 int 中。 byte[] bytes = {42,-15,-7, 8} 假设 nextByte 返回这个字节。 然后我会取每个我认为是{42、241、249、8}的二进制补码。这是它的样子吗?为什么这段代码不起作用:
public static int twosComplement(int input_value, int num_bits){
int mask = (int) Math.pow(2, (num_bits - 1));
return -(input_value & mask) + (input_value & ~mask);
}
然后我将使用以下内容将所有四个字节放入一个 int 中,这是否可行:
int i= (bytes[0]<<24)&0xff000000|
(bytes[1]<<16)&0x00ff0000|
(bytes[2]<< 8)&0x0000ff00|
(bytes[3]<< 0)&0x000000ff;
请尽可能具体。
【问题讨论】:
-
只需将四个随机字节组合起来,就像在上一条语句中一样。摆脱twosComplement方法,它只是一个复杂的NO-OP。
标签: java random byte bitwise-operators twos-complement