Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Поразрядные операции Objective-C

0

В первой части книги я сравнил память компьютера с огромным массивом переключателей, которые могут находиться во включенном или выключенном состоянии. Каждый переключатель представляет один бит; значение 1 обычно считается «включенным», а 0 – «выключенным».

Однако в своих программах вы не адресуете отдельные биты, а имеете дело с группами битов – байтами. Если представить байт как 8-разрядное целое число без знака, его биты соответствуют последовательным степеням 2 (рис. 33.1 ).

Рис. 33.1. Байт, представляющий десятичное число 60

Люди предпочитают работать в десятичной системе счисления – побочный эффект того, что у нас на руках по 10 пальцев. Однако компьютерам удобнее иметь дело со степенями 2. Программисты часто используют шестнадцатеричную систему (16 = 24) – особенно при работе с отдельными разрядами целых чисел.

В качестве дополнительных цифр в шестнадцатеричной системе используются буквы а, b, с, d, е и f. Таким образом, счет в шестнадцатеричной системе выглядит так: 0,1,2,3,4,5,6,7,8,9, а, b, с, d, е, f, 10, 11, …

Числа, записанные в шестнадцатеричной системе, обозначаются префиксом 0х. На рис. 33.2 показано, как выглядит число и байт на рис.33.1 в шестнадцатеричной записи.

Рис. 33.2. Один байт, представляющий шестнадцатеричное число 0х3с

Один байт всегда может быть представлен шестнадцатеричным числом из двух цифр (например, 3с). По этой причине шестнадцатеричные числа удобны для работы с

двоичными данными. Наверняка вы слышали, как опытные программисты говорят что- нибудь вроде: «Я расшифровал формат файла, просматривая документ в шестнадцатеричном редакторе». Хотите просмотреть содержимое файла в виде последовательности байтов в шестнадцатеричной записи? Выполните в Terminal команду hехdump с именем файла:

$ hexdump myfile.txt

0000000

3c

3f

78

6d

6c

20

76

65

72

73

69

6f

6e

3d

22

31

0000010

2e

30

22

3f

3e

0a

3c

62

6f

6f

6b

20

78

6d

6c

6e

0000020

73

3d

22

68

74

74

70

3a

2f

2f

64

6f

63

62

6f

6f

0000030

6b

2e

6f

72

67

2f

6e

73

2f

64

6f

63

62

6f

6f

6b

0000040

22

0000041

В первом столбце указано смещение (шестнадцатеричное) для байта, указанного во втором столбце. Каждое шестнадцатеричное число из двух цифр представляет один байт.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии