Преобразовать число и вывести в 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; }
Объяснение кода листинга программы
- Включаем файл
для работы с выводом в консоль - Объявляем переменную Distance типа int для хранения значения расстояния
- Объявляем пять переменных Var0, Var1, Var2, Var3, Var4 типа int для хранения полученных значений
- В функции main() выводим приглашение для ввода расстояния
- Считываем значение расстояния с помощью функции scanf() в переменную Distance
- Вычисляем и сохраняем значение Var0, обрезая байты слева и применяя операцию AND с 0xFF
- Выводим значение Var0 в консоль
- Вычисляем и сохраняем значение Var1, обрезая байты слева и применяя операцию AND с 0xFF, сдвигая значение расстояния на 8 позиций вправо
- Выводим значение Var1 в консоль
- Вычисляем и сохраняем значение Var2, обрезая байты слева и применяя операцию AND с 0xFF, сдвигая значение расстояния на 16 позиций вправо
- Вычисляем и сохраняем значение Var3, применяя операцию XOR к значению Var2 и 0xFF
- Вычисляем и сохраняем значение Var4, складывая значения Var1 и Var0 и применяя операцию XOR к результату и 0xFF
- Выводим значение Var4 в консоль
- Выводим шестнадцатеричное представление значения переменных Var0, Var1, Var2, Var3, Var4 в формате 0000 |%x|%x|%x|%x|%x|
- Возвращаем 0 из функции main(), что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д