Программирование. Принципы и практика использования C++ Исправленное издание, стр. 154
11.2. Форматирование вывода
1.251.24670477(1.25)(1.2467)1.25ostream<<Количество деталей, уточнений и возможностей при выводе кажется неограниченным, а при вводе, наоборот, есть лишь несколько вариантов. Например, для обозначения десятичной точки можно использовать разные символы (как правило, точку или запятую), денежные суммы в разных валютах также выводятся по-разному, а истинное логическое значение можно выражать как словом
truevraisandt111.2.1. Вывод целых чисел
Целые числа можно вывести как восьмеричные (в системе счисления с основанием 8), десятичные (в обычной системе счисления с основанием 10) и шестнадцатеричные (в системе счисления с основанием 16). Если вы ничего не знаете об этих системах, сначала прочитайте раздел A.2.1.1. В большинстве случаев при выводе используется десятичная система. Шестнадцатеричная система широко распространена при выводе информации, связанной с аппаратным обеспечением.
Причина популярности шестнадцатеричной системы кроется в том, что шестнадцатеричные цифры позволяют точно представить четырехбитовые значения. Таким образом, две шестнадцатеричные цифры можно использовать для представления восьмибитового байта, четыре шестнадцатеричные цифры представляют два байта (которые часто являются полусловом), восемь шестнадцатеричных цифр могут представить четыре байта (что часто соответствует размеру слова или регистра).
Когда был разработан язык С — предшественник языка С++ (в 1970-х годах), не менее популярной была восьмеричная система, но сейчас она используется редко. Мы можем указать, что (десятичное число)
1234cout << 1234 << "\t(decimal)\n" << hex << 1234 << "\t(hexadecimal)\n" << oct << 1234 << "\t(octal)\n";Символ
'\t'1234 (decimal)4d2 (hexadecimal)2322 (octal)Обозначения
<< hex<< oct<< hex<< occout << 1234 << '\t' << hex << 1234 << '\t' << oct << 1234 << '\n';cout << 1234 << '\n'; // восьмеричная основа продолжает действоватьВ итоге получаем следующий вывод:
1234 4d2 23222322 // целые числа продолжают трактоваться как восьмеричныеОбратите внимание на то, что последнее число выведено как восьмеричное; иначе говоря, термины
octhexdechexoctПОПРОБУЙТЕ
Выведите ваш день рождения в десятичном, восьмеричном и шестнадцатеричном форматах. Обозначьте каждое из этих значений. Выровняйте ваш вывод по столбцам, используя символ табуляции, и выведите свой возраст.
Представление чисел в системе счисления, отличной от десятичной, может ввести читателя в заблуждение. Например, если заранее не знать, в какой системе представлено число, то строка 11 может означать десятичное число 11, а не восьмеричное число 9 (т.е. 11 в восьмеричной системе) или шестнадцатеричное число 17 (т.е. 11 в шестнадцатеричной системе). Для того чтобы избежать таких проблем, можно попросить поток показать базу, в которой представлено целое число. Рассмотрим пример.
cout << 1234 << '\t' << hex << 1234 << '\t' << oct << 1234 << '\n';