Преобразование десятичной системы счисления в шестнадцатеричную и восьмеричную

#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);