Почему не только первый бит равен 1 у отрицательных чисел?

Недавно узнал, что первый бит в двоичной кодировке числа отвечает за знак: 1 ≡ - и 0 ≡ +. Однако, если использовать форматирование строк под 32 символа-бита (как в int) и в цикле вывести n-e количество отрицательных чисел, то мы увидим, что не только первый бит будет равен 1, а и последующие; причём в таком виде не понятно даже, где начинается само число, тогда как для положительных чисел всё, очевидно, выводится нормально.
Соответственно, вопрос, почему так? И как бы мне получить запись для условной цифры
-7 ≡ 111 (2) или любой другой не: 11111111111111111111111111111001 (вообще не понятно, что откуда взялось? :), но это типа 7), а в таком виде:
10000000000000000000000000000111.

Ниже прилагаю простенький код для теста:

import java.util.Random;

public class Char {
    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 0; i < 10; i++)
        {
            //int x = random.nextInt(1000);
            int x = -random.nextInt(1000);
            String binaryNumber = Integer.toBinaryString(x);
            binaryNumber = String.format("%32s", binaryNumber.replace(' ', '0'));
            System.out.println("x = " + x + " (10)");
            System.out.println("x = " + binaryNumber + " (2)");
        }
    }
}

Ответы (0 шт):