Организация данных


Устройства, анализом которых мы собираемся заниматься, предназначены для хранения цифровых данных, поэтому в этом разделе будут рассмотрены основные концепции хранения данных: двоичная и шестнадцатеричная запись, размеры данных, порядок байтов и структуры данных. Без хорошего понимания этих концепций невозможно понять, как организуется хранение данных. Даже если ранее вы уже занимались программированием, этот материал напомнит уже известные факты.
Двоичная, десятичная и шестнадцатеричная запись
Начнем с систем счисления. Люди привыкли работать с десятичными числами, но компьютеры работают с двоичными данными, состоящими из нулей и единиц. Каждая двоичная цифра (ноль или единица) называется битом; группа из 8 битов называется байтом. Двоичные числа аналогичны десятичным, если не считать того, что в десятичных числах используются 10 разных цифр (от 0 до 9), а в двоичных — только две.
Прежде чем подробно заниматься двоичными числами, необходимо понять, что такое десятичное число. Десятичное число представляет собой серию символов (цифр), при этом каждая цифра обладает некоторым значением. Для крайней правой цифры это значение равно 1, для цифры слева от нее — 10 и т. д. Каждая цифра обладает весовым значением, в 10 раз превышающим значение предыдущего разряда: для второй цифры справа это значение равно 10, для третьей — 100, для четвертой — 1000 и т. д. Для примера возьмем десятичное число 35 812. Чтобы

получить его, следует умножить цифру в каждом разряде на значение этого разряда и сложить произведения (рис. 2.1). Поскольку в данном случае десятичная запись числа преобразуется в его десятичное значение, результат вполне закономерен. Аналогичная процедура применяется и для вычисления десятичного значения чисел, записанных в других системах счисления.
Десятичное число: 35 812

10 000

1000

100

10

1

3

5

8

1

2

(3 х 10 ООО) + (5 х 1000) + (8 х 100) + (1 х 10) + (2 х 1) = 35 812 Рис. 2.1. Значение каждой цифры в десятичном числе


Крайняя правая цифра называется младшей, а крайняя левая — старшей. Так, для числа 35 812 цифра 3 является старшей, а цифра 2 — младшей.
Теперь перейдем к двоичным числам. В каждом разряде двоичного числа находится только одна из двух цифр (0 и 1); при этом каждый разряд обладает десятичным значением, вдвое превышающим значение предыдущего разряда. Таким образом, крайний правый разряд соответствует десятичному значению 1, второй разряд справа — десятичному значению 2, третий — 4 и четвертый — 8 и т. д. Чтобы вычислить десятичное представление двоичного числа, следует просуммировать весовые значения столбцов, умноженные на находящиеся в них цифры. На рис. 2.2 показано, как двоичное число 1001 0011 переводится в десятичную систему. Из результата видно, что его десятичное значение равно 147.
В табл. 2.1 приведены десятичные значения первых 16 двоичных чисел. В ней также указаны их шестнадцатеричные эквиваленты, о которых речь пойдет далее.
Двоичное число: 1001 0011

128

64

32

16

8

4

2

1

1

0

0

1

0

0

1

1

(1 х 128)+ (0x64)+ (0x32)+ (1 х 16)+ (0x8)+ (0x8)+ (0x4)+ (1 х 2) + (1 х 1) = 147 Рис. 2.2. Преобразование двоичного числа в десятичное значение


Таблица 2.1. Преобразования между двоичной, десятичной и шестнадцатеричной системами

Двоичная запись

Десятичная запись

Шестнадцатеричная запись

0000

00

0

0001

01

1

0010

02

2

0011

03

3

0100

04

4

0101

05

5

продолжение amp;





Таблица 2.1 (продолжение)

Двоичная запись

Десятичная запись

Шестнадцатеричная запись

0110

06

6

0111

07

7

1000

08

8

1001

09

9

1010
/>10
А

1011

11

В

1100

12

С

1101

13

D

1110

14

Е

1111

15

F


При записи шестнадцатеричных чисел используются 16 цифр (от 0 до 9, за которыми следуют буквы от А до F).
В табл. 2.1 показано соответствие между шестнадцатеричными цифрами и десятичными числами. Шестнадцатеричная запись удобна прежде всего тем, что она легко преобразуется в двоичную (и наоборот), и часто применяется при работе с низкоуровневыми данными. Я буду снабжать шестнадцатеричные числа префиксом Ох, чтобы отличить их от десятичных.
Необходимость в преобразовании шестнадцатеричных чисел в десятичную запись возникает довольно редко, но я все же покажу, как это делается. Десятичные весовые коэффициенты разрядов шестнадцатеричного числа увеличиваются в 16 раз. Таким образом, десятичное значение первого (крайнего правого) разряда равно 1, второго — 16, третьего — 256 и т. д. Чтобы выполнить преобразование, мы просто умножаем весовые коэффициенты разрядов на соответствующие цифры и суммируем результаты. На рис. 2.3 показан результат преобразования шестнадцатеричного числа 0х8ВЕ4 в десятичную систему.
Шестнадцатеричное число: 0х8ВЕ4
Эквиваленты ОхВ = 11 0хЕ = 14
Остается рассмотреть преобразования между шестнадцатеричной и двоичной записью. Такие преобразования выполняются гораздо проще и сводятся к простой подстановке. Чтобы получить двоичное представление имеющегося шестнадцатеричного числа, достаточно обратиться к табл. 2.1 и заменить каждую шестнадцатеричную цифру эквивалентной последовательностью из 4 битов. И наоборот, при преобразовании двоичного числа в шестнадцатеричное следует разделить число на группы по 4 бита и заменить каждую «четверку» эквивалентной шестнадцатеричной цифрой. Вот и все! Преобразование двоичного числа в шестнадцатеричное и наоборот показано на рис. 2.4.
Иногда требуется определить максимальное значение, которое может быть представлено некоторым количеством разрядов. Для этого нужно возвести коли
чество допустимых цифр в степень, равную числу разрядов, и вычесть 1 (чтобы учесть нулевое значение). Например, для двоичных чисел мы возводим 2 в степень, равную количеству битов, и вычитаем 1. Следовательно, наибольшее десятичное число, которое может быть представлено 32-разрядной двоичной последовательностью:
2У1 - 1 = 4 294 967 295 К счастью, в большинстве системных редакторов имеется встроенный калькулятор с возможностью преобразования между двоичной, десятичной и шестнадцатеричной записью, поэтому запоминать все эти методы вам не придется. В книге дисковые данные приводятся в шестнадцатеричной записи; важнейшие значения будут приводиться как в шестнадцатеричной, так и в десятичной записи.
1001 0011 в шестнадцатеричную запись



1001

0011



г ^



0x9

0x3


0x9

0x3



г ^


7

1001

0011





Рис. 2.4. Преобразование между двоичной и шестнадцатеричной записью осуществляется
простой заменой по табл. 2.1
<< | >>
Источник: Кэрриэ Б.. Криминалистический анализ файловых систем. 2007

Еще по теме Организация данных:

  1. Хранение и использование персональных данных работников. Передача персональных данных работников
  2. 3. Защита прав на программы для ЭВМ и базы данных Регистрация программ для ЭВМ и баз данных
  3. Понятие персональных данных работника. Обработка персональных данных работника
  4. Глава 48 ВЗЫСКАНИЯ ПО ИСПОЛНИТЕЛЬНЫМ ДОКУМЕНТАМ С ГОСУДАРСТВЕННЫХ ПРЕДПРИЯТИЙ, УЧРЕЖДЕНИЙ, ОРГАНИЗАЦИЙ, КОЛХОЗОВ, ИНЫХ КООПЕРАТИВНЫХ ОРГАНИЗАЦИЙ, ИХ ОБЪЕДИНЕНИЙ, ДРУГИХ ОБЩЕСТВЕННЫХ ОРГАНИЗАЦИЙ
  5. Структуры данных
  6. Киоски данных
  7. Структуры данных
  8. Структуры данных
  9. Структуры данных журнала
  10. § 5. Право изготовителя базы данных
  11. Избыток данных
  12. Категория данных содержимого
  13. Структуры данных
  14. Категории данных
  15. Уровни снятия данных
  16. Маркетинг по базам данных
  17. 11.1. Понятие персональных данных работника
  18. Категория данных файловой системы
  19. Размеры данных