Размер слова в битах в байтах путаница преобразования
У меня довольно элементарный вопрос, который несколько смущает меня. Было бы здорово немного освежиться в этом.
У каждого компьютера есть размер слова. Размер слова - это максимальный размер виртуального адресного пространства. Так что, если у нас есть, скажем, 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, и это мне очень помогло.