#c #decimal #hex #octal
#c #десятичная система счисления #шестнадцатеричное #восьмеричная
Вопрос:
Покажите, как записать константу в C, десятичное значение которой равно 65, как
a. шестнадцатеричная константа
65/16 = 1 r1
1/16 = 0 r1
Hexadecimal constant = 11
b. восьмеричная константа (в C)
65/8 = 8 r1
8/8 = 1 r0
1/8 = 0 r1
Octal constant = 101
Правильный ли это способ преобразования констант в C?
Комментарии:
1. 65/16 = 4 r1, так что (в конечном счете) 65 десятичных = 41 шестнадцатеричной. Также проверьте свои вычисления для 65/8. Это не столько
C
решение, сколько простая арифметика. Вероятно, вам не нужно преобразовывать константы вC
, вам просто нужно отображать их по-разному — важное различие.2. Возможно, я немного запутался. Мы должны считать остатки или сколько раз 16 переходит в 65 при поиске шестнадцатеричной константы? Если это первое, то будет ли восьмеричная константа
65/8 = 8 r1
и8/8 = 1 r0
=80
? Думаю, я не знаю, на чем остановиться.3. Вам нужно отслеживать оба: сколько раз 16 делится на 64 и каков остаток? Проблема перевода десятичной системы счисления 65 в восьмеричную должна быть более поучительной.
4. Мне кажется, что вопрос заключается в том, как записать эти константы на C, а не в том, как их вычислить.
Ответ №1:
Вам просто нужен цикл while и строка. Поскольку это домашнее задание, я не думаю, что мне следует говорить больше.
Ответ №2:
Метод заключается в делении на основание до тех пор, пока результат не станет меньше основания.
Итак, 65/8 дает 8 r1, но вы не останавливаетесь на достигнутом, потому что результат равен 8, не меньше 8
Вы снова делите на 8 и получаете 1
Это должно быть
65/64 = 10 r 1, где 64 = 8×8 = восьмеричное число 10
Не думаю, что я сказал слишком много
Комментарии:
1. Спасибо, я думал, что это то, что я сделал изначально в своем вопросе? Из приведенной здесь таблицы видно, что 65 десятичных знаков равны 101 восьмеричной: ascii.cl/conversion.htm
2. Да, если бы я добавил это, это дало бы вам ответ на вопрос домашнего задания, и некоторые пользователи SO считают, что это заслуживает отрицательного голосования, даже если ваше замешательство подлинное. Кстати , не забудьте проголосовать «За» и принять ответ, который вы считаете наиболее полезным.; D
Ответ №3:
Возможно, я неправильно понимаю вопросы, но, похоже, вас спрашивают, как представлены шестнадцатеричные и восьмиричные константы в C, а не как реализовать алгоритм преобразования десятичной системы счисления в шестнадцатиричную и восьмиричную.
Если это так:
шестнадцатеричные числа представлены предшествующим символом 0x или 0X
числа oct представлены предшествующим 0
int hex = 0x41;
int oct = 0101;
Конечно, вы можете убедиться в этом, напечатав наши значения в десятичной системе счисления:
printf("%dn", hex);
printf("%dn", oct);