Биты примитивного типа в Си - PullRequest
3 голосов
/ 06 марта 2019

Ну, я начинаю изучение языка Си, и у меня остался следующий вопрос, как заполняются биты примитивных типов, например, тип int, например, имеет 4 байта, то есть 32 бита, который подходит до 4294967296. Но если, например, я использую значение, которое занимает всего 1 байт, как остальные биты остаются?

    #include <stdio.h>

    int main(void) {

        int x = 5; // 101 how the rest of the bits are filled
                   // which was not used?
         return 0;
    }

Ответы [ 3 ]

0 голосов
/ 06 марта 2019

Остальные биты сохраняются с 0.

int a = 356;

Теперь давайте преобразуем его в двоичный файл.

 1     0    1     1     0   0   1   0   0

Теперь вы получите 9-битное число.Поскольку int выделяет 32 бита, заполните оставшиеся 23 бита 0.

Таким образом, значение, хранящееся в памяти, равно

         00000000 00000000 00000001 01100100
0 голосов
/ 06 марта 2019

Тип, который вы выбрали, определяет, насколько велико целое число, а не значение, которое вы храните внутри переменной.

Если мы предположим, что int - это 32 бита в вашей системе, тогда значение 5 будет выражено как 32-битное число.Который является 0000000000000000000000000101 двоичным или 0x00000005 шестнадцатеричным.Если бы другие биты имели какие-либо другие значения, это больше не было бы числом 5, 32 бита.

0 голосов
/ 06 марта 2019

Все начальные биты будут установлены на 0, в противном случае значение не будет 5. Немного, в современных компьютерах есть только два состояния, поэтому, если это не 0, то это 1, что приведет к тому, что значение будет отличаться. Итак, предполагая, что 32 бита у вас есть, что

5 == 0b00000000 00000000 00000000 00000101
5 == 0x00000005
...