Размер слова в битах в байтах путаница преобразования

У меня довольно элементарный вопрос, который несколько смущает меня. Было бы здорово немного освежиться в этом.

У каждого компьютера есть размер слова. Размер слова - это максимальный размер виртуального адресного пространства. Так что, если у нас есть, скажем, 32 bit word sizeу нас есть виртуальное адресное пространство, которое составляет максимум 2^32 values, В ссылках сказано 2^32 bytes? Почему диапазон в байтах.

Кроме того, я не понимаю, как 2^32 возможные значения будут возможным диапазоном адресов 4GB? Итак, мое замешательство связано с путаницей поворота 32 bit word size в 4 byte word sizeа потом как 4 bytes, умноженный 2^32 времена приводят к 4GB,

Один способ, которым я попытался рационализировать это, состоит в следующем:

2^32 bits = 2^2(bytes) x 2^10(kilobytes) x 2^10(megabytes) x 2^10(gigabytes)

Так последовательное деление 2^32 от 2^10 результаты в 2^2 GB или же 4 GB,

Может кто-нибудь указать, как 32-битный размер слова попадает в диапазон страниц 4 ГБ?

Спасибо

1 ответ

Решение

Аргумент в моей голове звучит так: у нас есть 32 бита, каждый из которых может быть максимум 1. Таким образом, самое большое число, которое мы можем принять, это когда все 32 бита (от 0 до 31 бита заполнены) с 1с. Таким образом, хитрость заключается в том, чтобы найти наибольшее число в десятичной форме, преобразовав двоичное число в десятичное, и получим:

1111111111111111111111111111111 (binary) = 4294967295 (decimal)

Но что такое 4294967295? Это на самом деле меньше 2^32. Теперь нужно помнить еще одну важную вещь:

4GB = 4294967296 bytes

Но почему он на 1 больше нашего результата? Потому что наш первый байт - это байт 0, а последний - 4294967295 байт, что в общей сложности составляет 4294967296 байт.

Итак, теперь мы находимся в положении, когда наименьшее число, которое может существовать в 32-битном регистре, равно 0, а самое большое число, которое может существовать в 32-битном регистре, составляет 4294967295.

0 (binary)  - 1111111111111111111111111111111 (binary)
0 (decimal) - 4294967295 (decimal)
0 (hex)     - 0xFFFFFFFF (hex)

Таким образом, имеется 4 ГБ адресуемого пространства, потому что все, что превышает 4 ГБ, будет иметь адрес, слишком большой для числа, чтобы поместиться внутри 32-разрядного числа и, следовательно, внутри 32-разрядного регистра.

Я делал все эти вещи в Excel, и это мне очень помогло.

Другие вопросы по тегам