8-разрядное целое число с двумя дополнительными числами находится в диапазоне от -128
до 127
. Чтобы представить этот диапазон, мы можем использовать IntStream#rangeClosed
.
С этот ответ , мы можем использовать BigInteger
для левой панели. двоичный файл String
(генерируется Integer#toBinaryString
) с нулями, если его длина меньше 8
(что означает, что значение положительное).
В противном случае значение представляет собойотрицательное число, и соответствующая ему двоичная строка будет иметь длину, превышающую 8
, которая должна быть усечена до 8
символов с использованием String#substring
.
Наконец, Stream<String>
можно собрать в String[]
, используя Stream#toArray
.
public static String[] generateBitSequences() {
return IntStream.rangeClosed(-128, 127)
.mapToObj(Integer::toBinaryString)
.map(BigInteger::new)
.map(b -> String.format("%08d", b)) // Left pad positive values with 0s.
.map(s -> s.substring(s.length() - 8)) // Remove leading 1s from negative values.
.toArray(String[]::new);
}
Выход:
[10000000, 10000001, ..., 01111110, 01111111]