Чтение онлайн

на главную - закладки

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

Рассмотрим шестнадцатеричную систему счисления. Мы должны назвать шестнадцать значений от 0 до 15. Обычно для этого используются следующие символы:

0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
A
,
B
,
C
,
D
,
E
,
F
, где
A
имеет десятичное значение
10
,
B
— десятичное значение
11
и так далее:

A==10
,
B==11
,
C==12
,
D==13
,
E==14
,
F==15

Теперь можем записать десятичное число

123
как
7B
в шестнадцатеричной системе счисления. Для того чтобы убедиться в этом, обратите внимание на то, что в шестнадцатеричной системе счисления число
7B
равно
7*16+11
, что в десятичной системе счисления равно
123
. И наоборот, шестнадцатеричное число
123
означает
1*16^2+2*16+3
, т.е.
1*256+2*16+3
, что в десятичной системе счисления равно
291
. Если вы никогда не сталкивались с недесятичными представлениями целых чисел, то мы настоятельно рекомендуем вам поупражняться в преобразовании чисел из десятичной системы в шестнадцатеричную, и наоборот. Обратите внимание на то, что шестнадцатеричная цифра имеет очень простое соответствие со своим двоичным значением.

Это объясняет популярность шестнадцатеричной системы. В частности, значение байта просто выражается двумя шестнадцатеричными цифрами.

В языке C++ (к счастью) числа являются десятичными, если иное не указано явно. Для того чтобы сказать, что число является шестнадцатеричным, следует поставить префикс

0X
(символ
X
происходит от слова hex), так что
123==0X7B
и
0X123==291
. Точно так же можно использовать символ
x
в нижнем регистре, поэтому
123==0x7B
и
0x123==291
. Аналогично мы можем использовать шестнадцатеричные цифры
a
,
b
,
c
,
d
,
e
и
f
в нижнем регистре. Например,
123==0x7b
.

Восьмеричная система основана на базе счисления, равной восьми. В этом случае мы можем использовать только восемь восьмеричных цифр:

0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
. В языке C++ числа в восьмеричной системе счисления начинаются с символа
0
, так что число
0123
— это не десятичное число
123
, а
1*8^2+2*8+3
, т.е.
1*64+2*8+3
или (в десятичном виде)
83
. И наоборот, восьмеричное число
83
, т.е.
083
, равно
8*8+3
, т.е. десятичному числу
67
. Используя систему обозначений языка C++, получаем равенства
0123==83
и
083==67
.

Двоичная система основана на базе счисления, равной двум. В этой системе есть только две цифры:

0
и
1
. В языке С++ невозможно непосредственно представить двоичные числа
как литералы. В качестве литералов и формата ввода-вывода в языке С++ непосредственно поддерживаются только восьмеричные, десятичные и шестнадцатеричные числа. Однако двоичные числа полезно знать, даже если мы не можем явно представить их в тексте программы. Например, десятичное число
123
равно
1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2+1
, т.е.
1*64+1*32+1*16+1*8+0*4+1*2+1
, т.е. (в двоичном виде)
1111011
.

A.2.2. Литералы с плавающей точкой

Литералы с плавающей точкой (floating-point-literal) содержат десятичную точку (

.
), показатель степени (например,
e3
) или суффикс, обозначающий число с плавающей точкой (
d
или
f
). Рассмотрим примеры.

123 // int (нет десятичной точки, суффикса или показателя степени)

123. // double: 123.0

123.0 // double

.123 // double: 0.123

0.123 // double

1.23e3 // double: 1230.0

1.23e–3 // double: 0.00123

1.23e+3 // double: 1230.0

Литералы с плавающей точкой имеют тип

double
, если суффикс не означает иное. Рассмотрим примеры.

1.23 // double

1.23f // float

1.23L // long double

A.2.3. Булевы литералы

Литералами типа

bool
являются литералы
true
и
false
. Целочисленное значение литерала
true
равно
1
, а литерала
false
0
.

A.2.4. Символьные литералы

Символьный литерал (character literal) — это символ, заключенный в одинарные кавычки, например

'a'
или
'@'
. Кроме того, существует несколько специальных символов.

Специальный символ представляется с помощью имени в языке C++, заключенного в одинарные кавычки, например

'\n'
(новая строка) и
'\t'
(табуляция).

Набор символов содержит следующие видимые символы:

abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZ

0123456789

!@#$%^&*_+|~`{}[]:";'<>?,./

В переносимом коде нельзя рассчитывать на дополнительные видимые символы. Значение символа, например

'a'
для буквы
a
, зависит от реализации (но его легко выяснить, например, выполнив инструкцию,
cout << int('a')
).

A.2.5. Строковые литералы

Строковый литерал (string literal) — это последовательность символов, заключенных в двойные кавычки, например

"Knuth"
и
"King Canute"
. Строковый литерал нельзя произвольно разбивать на несколько строк; для перехода на новую строку используется специальный символ
\n
.

Поделиться:
Популярные книги

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4