2013-04-02 9 views
2

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

Каждый компьютер имеет размер слова. Размер слова - это максимальный размер виртуального адресного пространства. Поэтому, если мы скажем 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 ГБ?

Благодаря

+0

http://en.wikipedia.org/wiki/32-bit – KevinDTimm

+0

@KevinDTimm - Спасибо. Но запись на самом деле не переходит в пошаговое разбиение с 32-битного слова размером до 4 ГБ максимального смещения. –

+0

Поиск бинарной математики (wikipedia снова является хорошим местом для начала) – KevinDTimm

ответ

2

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

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-битного регистра.

Я сделал все это в превосходстве и увидел, что это очень помогло мне.

+1

Это справедливо только для арифметики без знака. –

 Смежные вопросы

  • Нет связанных вопросов^_^