Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Восьмеричные и шестнадцатеричные числа





Обычно в языке С предполагается, что целочисленные константы являются деся­тичными числами (по основанию 10). Однако у многих программистов пользуются популярностью восьмеричные (по основанию 8) и шестнадцатеричные (по основа­нию 16) числа. Поскольку 8 и 16 представляют собой степени числа 2, а 10 — нет, вось­меричная и шестнадцатеричная системы счисления более удобны для представления чисел, связанных с компьютерами. Например, число 65536, которое часто встреча­ется в 16-разрядных машинах, в шестнадцатеричной форме записывается как 10000. Кроме того, каждая цифра шестнадцатеричного числа соответствует в точности 4 би­там. Например, шестнадцатеричная цифра 3 — это 0011, а шестнадцатеричная цифра 5 — это 0101. Таким образом, шестнадцатеричному значению 35 соответствует битовая комбинация 0011 0101, а шестнадцатеричному значению 53 — 010 1 0011. Такое соот­ветствие позволяет облегчить переход от шестнадцатеричного представления числа к двоичному представлению (по основанию 2) и обратно. Но каким образом компьютер может определить, в какой форме записано число 10000 — в десятичной, шестнадцате­ричной или восьмеричной? В языке С система счисления задается с помощью специ­ального префикса. Префикс Ох или ОХ означает, что вы указываете шестнадцатерич­ное число, поэтому 16 в шестнадцатеричном виде записывается как 0x10 или 0X10. Аналогично, префикс 0 (ноль) означает, что задается восьмеричное число. Например, в С десятичное число 16 в восьмеричном виде записывается как 020. Вы должны понимать, что возможность применения разных систем счисления является лишь удобством для программистов. Это не влияет на способ хранения числа в памяти. Другими словами, вы можете написать 16, 020 или 0x10, и это число в каждом случае будет храниться в памяти одинаковым образом — в двоичном коде, используемом внутри компьютера.

Отображение восьмеричных и шестнадцатеричных чисел

Язык С позволяет не только записывать число в любой из трех систем счисления, но и отображать его во всех них. Чтобы вывести на экран целое число в восьмерич­ном, а не десятичном виде, вместо М применяйте спецификатор %о. Для отображе­ния целого числа в шестнадцатеричном виде служит спецификатор %х. Если вы хоти­те вывести на экран префиксы языка С, воспользуйтесь спецификаторами %#о, %#х и %#Х, которые позволяют отображать префиксы 0, Ох и ОХ. В листинге 3.3 приведен небольшой пример. (Вспомните, что в некоторых интегрированных средах разработ­ки может потребоваться вставить в программу оператор getchar ();, чтобы предо­твратить немедленное закрытие окна выполнения программы.)

Листинг 3.3. Программа bases.с

/* bases.с -- выводит число 100 в десятичной, восьмеричной и шестнадцатеричной форме */

#include <stdio.h>

int main(void)

{

int x = 100;

printf ("десятичное = %d; восьмеричное = %o; шестнадцатеричное = %x\n", x, x, x);

printf("десятичное = %d; восьмеричное = %#o; шестнадцатеричное = %#x\n", x, x, x);

return 0;

}

 

После компиляции и выполнения этой программы получен следующий вывод:

десятичное = 100; восьмеричное = 144; шестнадцатеричное = 64 десятичное = 100; восьмеричное = 0144; шестнадцатеричное = 0x64

 

Одно и то же значение отображается в трех различных системах счисления. Все преобразования выполняет функция printf (). Обратите внимание, что префиксы О или Ох не отображаются в выводе до тех пор, пока в спецификаторе не будет указан символ #.

 

Date: 2015-12-13; view: 1001; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию