Преобразовать число и вывести в hex - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем ПРИВЕТ! Помогите, пожалуйста, разобраться с кодом написанным на Си подобном языке. Программа взята из реально работающего проекта. Она должна взять число десятичное (123456) перевести его в ХЕКС и прописать 56 34 12, но это уже в ХЕКСе должно быть 56 34 12. Я там сам понапичкал её ПРИНТФ-ами, но так и не разобрался как она работает Да и результат у меня что-то совсем не 56 34 12. Помогите пожалуйста комментариями к листингу и объясните почему у менея 56 34 12 не получается. Извините, возможно, за слишком много вопросов, я учусь Var5, Var6, Var7 соответственно 56, 34, 12. Вот результат выполнения программы: Var0=123456;- 123456 Var2=Var0$10;- 6 Var0=Var0/10;- 12345 Var2=Var2|((Var0$10)<<4);- 86 Var2=Var2|((Var0$10)<<8);- 1110 Var0=Var0/10;- 123 Var2=Var2|((Var0$10)<<12);- 13398 Var0=Var0/10;- 12 Var2=Var2|((Var0)<<16);- 144470 Var0=Var0/10;- 1 Var2=Var2|((Var0$10)<<20);- 1193046 Var5=Var2&255;- 86 Var6 = Var2 >> 8;- 4660 Var7 = Var2 >> 16;- 18 К стати, я являюсь призёром Украины по горным лыжам, если кого-то устроит, то можем сделать бартер. Вы меня по Си поднатаскаете, а я вас по спорту. На Буковеле позанимемся.
#include <stdio.h>
unsigned long  Var0, Var2, Var5, Var6, Var7;
 
int main( void )
{
Var0=123456;
  printf("\n Var0=123456;- %d",Var0);
Var2=Var0%10;  
  printf("\n Var2=Var0$10;- %d",Var2);
Var0=Var0/10;
  printf("\n Var0=Var0/10;- %d",Var0);
Var2=Var2|((Var0%10)<<4);  Var0=Var0/10;
  printf("\n Var2=Var2|((Var0$10)<<4);- %d",Var2);
Var2=Var2|((Var0%10)<<8); 
  printf("\n Var2=Var2|((Var0$10)<<8);- %d",Var2);
Var0=Var0/10;
  printf("\n Var0=Var0/10;- %d",Var0); 
Var2=Var2|((Var0%10)<<12);
  printf("\n Var2=Var2|((Var0$10)<<12);- %d",Var2);
Var0=Var0/10;
  printf("\n Var0=Var0/10;- %d",Var0); 
Var2=Var2|((Var0%10)<<16); 
  printf("\n Var2=Var2|((Var0%10)<<16);- %d",Var2);
Var0=Var0/10;
  printf("\n Var0=Var0/10;- %d",Var0); 
Var2=Var2|((Var0%10)<<20);  
  printf("\n Var2=Var2|((Var0$10)<<20);- %d",Var2);
Var5=Var2&255;
  printf("\n Var5=Var2&255;- %d",Var5);
Var6 = Var2 >> 8;
  printf("\n Var6 = Var2 >> 8;- %d",Var6);
Var7 = Var2 >> 16;
  printf("\n Var7 = Var2 >> 16;- %d",Var7);
       
  system("PAUSE");
    return 0;
}

Решение задачи: «Преобразовать число и вывести в hex»

textual
Листинг программы
#include <stdio.h>
 
int Distance ; 
int  Var0, Var1, Var2, Var3, Var4;
 
int main (void)
    {
    printf ("Введіть пробіг  ");
    scanf ("%x", &Distance );
       
  Var0 = Distance & 0xFF; 
 printf ("\nVar0-%x", Var0);   
     
    Var1 =  (Distance  >> 8) & 0xFF;
 printf ("\nVar1-%x", Var1);
 
    Var2 = (Distance >> 16) & 255;
 printf ("\nVar2-%x", Var2);    
 
  Var3 = Var2 ^ 0xFF;   
 printf ("\nVar3-%x", Var3);  
 
   Var4 = (Var1 + Var0) ^ 0xFF;
 printf ("\nVar4-%x", Var4); 
 
 printf ("\n\n        :00:01:02:03:04:05:06:");
 printf ("\n   0000 |%x|%x|%x|%x|%x|\n", Var0, Var1, Var2, Var3, Var4); 
       
 return 0;
    }

Объяснение кода листинга программы

  1. Включаем файл для работы с выводом в консоль
  2. Объявляем переменную Distance типа int для хранения значения расстояния
  3. Объявляем пять переменных Var0, Var1, Var2, Var3, Var4 типа int для хранения полученных значений
  4. В функции main() выводим приглашение для ввода расстояния
  5. Считываем значение расстояния с помощью функции scanf() в переменную Distance
  6. Вычисляем и сохраняем значение Var0, обрезая байты слева и применяя операцию AND с 0xFF
  7. Выводим значение Var0 в консоль
  8. Вычисляем и сохраняем значение Var1, обрезая байты слева и применяя операцию AND с 0xFF, сдвигая значение расстояния на 8 позиций вправо
  9. Выводим значение Var1 в консоль
  10. Вычисляем и сохраняем значение Var2, обрезая байты слева и применяя операцию AND с 0xFF, сдвигая значение расстояния на 16 позиций вправо
  11. Вычисляем и сохраняем значение Var3, применяя операцию XOR к значению Var2 и 0xFF
  12. Вычисляем и сохраняем значение Var4, складывая значения Var1 и Var0 и применяя операцию XOR к результату и 0xFF
  13. Выводим значение Var4 в консоль
  14. Выводим шестнадцатеричное представление значения переменных Var0, Var1, Var2, Var3, Var4 в формате 0000 |%x|%x|%x|%x|%x|
  15. Возвращаем 0 из функции main(), что означает успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы