Русские Блоги
Запись и вывод двоичных, восьмеричных, шестнадцатеричных целых чисел на языке C
Каталог статей
Целое число — это обычно используемый тип данных в нашей жизни, а также данные, часто используемые в программировании. В языке C ключевое слово int используется для определения целочисленных переменных (int — это сокращение от целого числа).
При определении переменных вы можете добавить четыре модификатора: подписанный, беззнаковый, короткий и длинный.
signed: Со знаком, может представлять положительные и отрицательные числа.
unsigned: Без знака, может представлять только положительные числа, такие как нижний индекс массива, рост человека и т. Д.
short: Короче говоря, в современных 64-разрядных операционных системах целые числа занимают 4 байта памяти, используя 4 байта.
байтов более чем достаточно для хранения меньших целых чисел, и два байта будут свободными, а эти байты будут потрачены впустую. В первые дни, когда был изобретен язык C, или в микроконтроллерах и встраиваемых системах, память была очень ограниченным ресурсом, и все программы пытались максимально экономить память.
long: Длинное целое число.
1. Запись двоичных, восьмеричных и шестнадцатеричных целых чисел.
По умолчанию число является десятичным, что означает, что десятичное число не требует специального формата. Однако представление двоичного, восьмеричного или шестнадцатеричного числа отличается от представления десятичного числа. Чтобы отличить его от десятичного числа, необходимо использовать особый способ записи. В частности, перед числом нужно добавить определенный символ, который является префиксом. .
1. Двоичный
Двоичный состоит из двух чисел, 0 и 1, которые при использовании должны начинаться с 0b или 0B (без учета регистра).
Ниже приведены допустимые двоичные файлы:
Следующие файлы являются недопустимыми:
Обратите внимание, что стандартный язык C не поддерживает указанную выше двоичную нотацию, но некоторые компиляторы расширили себя для поддержки двоичных чисел. Другими словами, не все компиляторы поддерживают двоичные числа, только некоторые компиляторы поддерживают это, и это связано с версией компилятора.
2. Восьмеричный
Восьмеричная система состоит из восьми цифр от 0 до 7 и должна начинаться с 0 при использовании (обратите внимание, что это число 0, а не буква o).
Ниже приведены допустимые восьмеричные числа:
Следующие восьмеричные числа недопустимы:
3. Шестнадцатеричный
Шестнадцатеричная система состоит из чисел 0
f (без учета регистра) и должна начинаться с 0x или 0X (без учета регистра) при использовании.
Ниже приведены допустимые шестнадцатеричные числа:
Следующие шестнадцатеричные числа являются недопустимыми:
4. Яма, чтобы обратить внимание на
В реальной жизни и на работе, когда мы пишем десятичные числа, для выравнивания или по другим причинам, добавление 0 перед значением не имеет значения. Однако на языке C не добавляйте 0 перед десятичным числом, это будет ошибочно компьютер — это восьмеричное число.
Два, двоичный, восьмеричный, шестнадцатеричный целочисленный вывод
В следующей таблице представлен формат вывода различных шестнадцатеричных целых чисел.
Внимательные читатели могут обнаружить, что в приведенной выше таблице нет двоичного формата вывода.Хотя некоторые компиляторы поддерживают запись двоичных чисел, они не могут использовать функцию printf для вывода двоичных чисел. Вы можете написать функцию для преобразования других шестнадцатеричных чисел в двоичные числа и сохранить их в строке, а затем использовать% s для вывода в функции printf.
Пример:
Четыре, заявление об авторских правах
Оригинальная статья из C Language Technology Network. Укажите источник, автора и ссылку на исходную статью для перепечатки.
Источник: C Language Technology Network (www.freecplus.net)
Автор: Кодекс этики сельского хозяйства
Если эта статья полезна для вас, пожалуйста, поддержите ее или перепубликуйте эту статью в своем блоге, чтобы ее увидело больше людей, спасибо! ! !
Интеллектуальная рекомендация
VC Non-ASCII Язык Скопируйте в буфер обмена
MFC версия На сегодняшний день я столкнулся с странным явлением, и японская система нажала Ctrl + C на элементе управления, а затем вставила его, чтобы побраться. Невозможно переключиться на метод япо.
Используйте модуль PHP в HTTPD для анализа веб -страницы PHP
Добавить анализ PHP в файл конфигурации HTTPD Измените файл конфигурации Apache, чтобы Apache мог использовать PHP для анализа Файл конфигурации httpd находится на пути /SR/Local/httpd/conf/httpd.conf.
Производитель -Понимание вопроса о выпуске
Описание проблемы: Вовлеченные объекты: производители (производственные данные), потребители (потребительские данные), буфер (посредник) Конкретное описание: Производители и потребители представляют с.
[Проблема] Несколько методов дедупликации массивов
1. Установите с помощью оператора раскрытия, чтобы удалить дублирование (лично считаю наиболее лаконичным) 2. метод дедупликации indexOf () 3.includes () метод дедупликации 4. Оптимизируйте метод масс.
Использование апплета WeChat wx: для
Я видел в официальном документе, что wx: for помещается в список рендеринга. Из этого мы можем приблизительно узнать, что основная функция wx: for — это список. Обычно мы говорим список. Я думаю, что .
4.13 – Литералы
В программировании константа – это фиксированное значение, которое нельзя изменять. В C++ есть два типа констант: литеральные константы и символьные константы. В этом уроке мы рассмотрим литеральные константы, а в следующем – символьные константы.
Литеральные константы (обычно называемые просто литералами) – это значения, вставленные непосредственно в код. Например:
Они являются константами, потому что их значения не могут быть изменены динамически (сначала вы должны изменить их, а затем перекомпилировать программу, чтобы изменение вступило в силу).
Так же, как у объектов есть тип, тип есть и у всех литералов. Тип литерала предполагается из значения и формата самого литерала.
Значение литерала | Примеры | Тип по умолчанию |
---|---|---|
целое число | 5, 0, -3 | int |
логическое значение | true , false | bool |
число с плавающей запятой | 3.4, -2.2 | double (не float ) |
символ | ' a ' | char |
строка в стиле C | " Hello, world! " | const char[14] |
Суффиксы литералов
Если тип литерала по умолчанию не соответствует необходимому, вы можете изменить тип литерала, добавив суффикс:
Тип данных | Суффикс | Назначение |
---|---|---|
int | u или U | unsigned int |
int | l или L | long |
int | ul , uL , Ul , UL , lu , lU , Lu или LU | unsigned long |
int | ll или LL | long long |
int | ull , uLL , Ull , ULL , llu , llU , LLu или LLU | unsigned long long |
double | f или F | float |
double | l или L | long double |
Обычно вам не нужно использовать суффиксы для целочисленных типов, но вот пара примеров:
По умолчанию литеральные константы с плавающей точкой имеют тип double . Чтобы они были типа float , необходимо использовать суффикс f (или F ):
Начинающие программисты часто не понимают, почему следующий код работает не так, как ожидалось:
Поскольку у 4.1 нет суффикса, он рассматривается как литерал типа double , а не как литерал типа float . Когда C++ определяет тип литерала, ему всё равно, что вы делаете с литералом (например, в данном случае используете его для инициализации переменной float ). Следовательно, 4.1 необходимо преобразовать из double в float , прежде чем его можно будет присвоить переменной f , и это может привести к потере точности.
Литералы можно использовать в коде C++, если их значения понятны. Чаще всего это происходит при использовании для инициализации или присвоения значения переменной, выполнения математических операций или вывода текста на экран.
Строковые литералы
В уроке «4.11 – Символы» мы определили строку как набор последовательных символов. C++ поддерживает строковые литералы:
Строковые литералы в C++ по историческим причинам обрабатываются очень странно. На данный момент можно использовать строковые литералы для печати текста с помощью std::cout , но не пытайтесь назначать их переменным или передавать их функциям – это либо не сработает, либо будет работать не так, как вы ожидаете. О строках в стиле C (и о том, как обойти все эти странные проблемы) мы поговорим подробнее в будущих уроках.
Экспоненциальная запись для числовых литералов с плавающей запятой
Есть два разных способа объявить литералы с плавающей точкой:
Во второй форме число после экспоненты может быть отрицательным:
Литералы в восьмеричной и шестнадцатеричной системах счисления
В повседневной жизни мы считаем, используя числа в десятичной системе счисления, где каждая цифра может быть 0, 1, 2, 3, 4, 5, 6, 7, 8 или 9. Десятичная система счисления число также называется «с основанием 10», потому что в ней возможно использование 10 цифр (от 0 до 9). В этой системе мы считаем так: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,… По умолчанию, числа в программах на C++ считаются десятичными.
В двоичной системе счисления всего 2 цифры: 0 и 1, поэтому она называется «с основанием 2». В двоичном формате мы считаем так: 0, 1, 10, 11, 100, 101, 110, 111,…
Существуют две других системы счисления, которые иногда используются в вычислениях: восьмеричная и шестнадцатеричная.
Восьмеричная система счисления – с основанием 8, то есть доступны только цифры: 0, 1, 2, 3, 4, 5, 6 и 7. В восьмеричном формате мы считаем так: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12,… (примечание: цифр 8 и 9 нет, поэтому мы сразу переходим от 7 к 10).
Десятичная система | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Восьмеричная система | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 |
Чтобы использовать литерал в восьмеричном формате, добавьте к вашему литералу префикс 0 (ноль):
Эта программа печатает:
Почему 10, а не 12? Потому что числа печатаются в десятичном формате, а 12 в восьмеричном формате = 10 десятичном формате.
Восьмеричная система счисления практически не используется, и мы рекомендуем вам ее избегать.
Шестнадцатеричная система счисления — с основанием 16. В шестнадцатеричной системе мы считаем так: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12,…
Десятичная система | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Восьмеричная система | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 10 | 11 |
Чтобы использовать литерал в шестнадцатеричном формате, добавьте к нему префикс 0x .
Эта программа печатает:
Поскольку для одной шестнадцатеричной цифры возможны 16 различных значений, мы можем сказать, что одна шестнадцатеричная цифра использует 4 бита. Следовательно, пара шестнадцатеричных цифр может использоваться для точного представления полного байта.
Рассмотрим 32-битное целое число со значением 0011 1010 0111 1111 1001 1000 0010 0110 . Из-за длины и повторяемости цифр его нелегко прочитать. В шестнадцатеричном формате это же значение будет выглядеть так: 3A7F 9826 . Это делает шестнадцатеричные значения полезными как краткий способ представления значения в памяти. По этой причине шестнадцатеричные значения часто используются для представления адресов или необработанных значений в памяти.
До C++14 не было возможности назначить литерал в двоичном формате. Однако шестнадцатеричные пары предоставляют нам для этого полезный обходной путь:
Литералы в двоичном формате и разделители цифр C++14
В C++14 мы можем назначать литералы в двоичном формате с помощью префикса 0b :
Поскольку длинные литералы трудночитаемы, в C++14 также добавлена возможность использования кавычек ( ' ) в качестве разделителя цифр.
Если ваш компилятор несовместим с C++14, он пожалуется, если вы попытаетесь использовать любой из этих приемов.
Печать десятичных, восьмеричных, шестнадцатеричных и двоичных чисел
По умолчанию C++ выводит значения в десятичном формате. Однако вы можете указать ему, что необходимо печатать в других форматах. Печать в десятичном, восьмеричном или шестнадцатеричном формате упрощается благодаря использованию std::dec , std::oct и std::hex :
Эта программа печатает:
Печать в двоичном формате немного сложнее, поскольку std::cout не имеет для этого встроенной возможности. К счастью, стандартная библиотека C++ включает в себя тип std::bitset (в заголовке <bitset> ), который сделает это за нас. Чтобы использовать std::bitset , мы можем определить переменную std::bitset и указать std::bitset , сколько бит мы хотим сохранить. Количество бит должно быть константой времени компиляции. std::bitset может быть инициализирован целочисленным значением без знака (в любом формате, включая десятичный, восьмеричный, шестнадцатеричный или двоичный).
Эта программа напечатает:
Мы также можем создать временный (анонимный) std::bitset для печати одного значения. В приведенном выше коде эта строка:
создает временный объект std::bitset с 4 битами, инициализирует его с помощью литерала 0b1010 , печатает его значение в двоичном формате, а затем отбрасывает временный std::bitset .
Магические числа, и почему это плохо
Рассмотрим следующий фрагмент:
Число, такое как 30 в приведенном выше фрагменте, называется магическим числом. Магическое число – это литерал (обычно число) в середине кода, не имеющий никакого контекста. Что значит 30? Хотя вы, наверное, догадываетесь, что в данном случае это максимальное количество студентов в классе, но это не совсем очевидно. В более сложных программах может быть очень сложно сделать вывод, что представляет собой жестко запрограммированное число, если нет комментария, объясняющего его.
Использование магических чисел обычно считается плохой практикой, потому что, помимо отсутствия контекста, для чего они используются, они создают проблемы, если значение необходимо изменить. Предположим, школа покупает новые парты, позволяющие увеличить количество учеников в классе с 30 до 35, и наша программа должна это отразить. Рассмотрим следующую программу:
Чтобы обновить нашу программу для использования нового размера класса, нам нужно будет обновить константу с 30 до 35. Но как насчет вызова setMax() ? Имеет ли это число 30 то же значение, что и другое число 30? Если да, то его следует обновить. В противном случае его следует оставить в покое, иначе мы можем сломать нашу программу где-нибудь еще. Если вы выполняете глобальный поиск и замену, вы можете случайно обновить аргумент setMax() , хотя он не должен был изменяться. Таким образом, вам нужно просмотреть весь код для каждого экземпляра литерала 30, а затем определить, нужно ли его изменить или нет. Это может занять много времени (и привести к ошибкам).
Хотя мы говорим «магические числа», это относится ко всем видам значений. Рассмотрим следующий пример:
В этом примере только одно число (100), но оно также используется в строках. Если мы решим обновить максимальное количество, скажем, на 200, нам придется обновить три разных случая, где встречается 100.
К счастью, существуют лучшие варианты (символьные константы). Об этом мы поговорим на следующем уроке.
Как записать число в шестнадцатеричной системе исчисления C#?
Приветствую всех! Сегодня я покажу пример того как можно преобразовать число в шестнадцатеричную систему исчисления.
Как мы видим, используется специальный знак форматирования X или x, который преобразует число в шестнадцатеричную систему исчисления.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Перевод int в шестнадцатеричную систему
Перевод в двоичную, восьмеричную или шестнадцатеричную систему счисления
Создать меню с командами Begin, Help, About. При выборе команды About открывается окно с.
Конвертировать значение переменной типа int в шестнадцатеричную СС
как я могу программно конвертировать : 1.значение переменной типа int в 16чную систему .
Перевести число N в шестнадцатеричную систему счисления
Обработка чисел Дано целое число N = cn-1…c0, где ci – это цифры десятичной системы счисления.
Перевод в двоичную, восьмеричную или шестнадцатеричную систему счисления
Создать меню с командами Begin, Help, About. При выборе команды About открывается окно с.
НУ вот я написал, но оно не робит (вывод).
на экране следующие строки:
As decimal integers:
hexValue = 1620
octalValue =468
decimalValue = 255
As formatted integers:
hexValue = f9ac
octalValue = 724
decimalValue = 0xff
Форматирование шестнадцатеричных значений с помощью команд %d в операторах printf() в строках 10-12 отображает их эквивалентные десятичные значения. Чтобы отобразить шестнадцатеричные значения, необходимо использовать команды %х (или %Х для вывода прописных букв от А до F, используемых в шестнадцатеричных числах). Предваряйте Х или х символом # для выбора альтернативного формата. Например, строка 17 использует %#х для отображения десятичного значения 255 в виде шестнадцатеричного 0xff. Задавайте %о для получения восьмеричного формата.