В классе Random определите метод nextByte, который возвращает значение байта примитивного типа.Значения, возвращаемые в последовательности вызовов, должны быть равномерно распределены по всем возможным значениям в типе. В классе Random определите метод nextInt, который возвращает значение примитивного типа int.Значения, возвращаемые в последовательности вызовов, должны быть равномерно распределены по всем возможным значениям в типе.(Подсказка: Java требует, чтобы реализации использовали представление с двойным дополнением для целых чисел. Узнайте, как вычислить случайное представление с двойным дополнением из четырех случайных байтовых значений, используя операторы сдвига Java.)
Привет, я былв состоянии выполнить часть 3, и теперь мне нужно использовать 3. для решения 4. но я не знаю, что делать.Я думал об использовании nextByte для создания массива из 4 байтов, тогда я бы взял по два дополнения каждого, чтобы у меня не было отрицательных чисел, а затем я бы собрал их в одно целое число.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;
Пожалуйста, будьте как можно точнее.