Перевести число из 10 в 16 систему исчисления - C (СИ)
Формулировка задачи:
1. Написать и протестировать функцию
unsigned int F(unsigned int m);
которая целое положительное число m записывает в шестнадцатеричной системе счисления, разряды в этой записи переставляет в обратном порядке, получившееся шестнадцатеричное число переводит в десятичную систему счисления, и возвращает полученное значение. Например, при m = 513 F(m) возвратит значение 258.
есть исходник перевода из 10 в 16 и записывает его наоборот. нужно число записанное в обратном порядке записать в 10 системе исчисления. и если можно с коментариями
#include <stdio.h> #include <string.h> char * strreverse(char * s){ char *h,*t,ch; for (h=s,t=s+strlen(s)-1;h<t;++h,--t) { ch=*h; *h=*t; *t=ch; } return s; } unsigned int hexreverse(unsigned n){ static char buf[16]; sprintf(buf,"%x",n); sscanf(strreverse(buf),"%x",&n); return n; } int main(void) { unsigned n; while ( printf("Number: ") && scanf("%u", &n) == 1 ){ printf("Before: %x\n", n); printf("After: %x\n", hexreverse(n)); } return 0; }
Решение задачи: «Перевести число из 10 в 16 систему исчисления»
textual
Листинг программы
#include <stdio.h> #include <string.h> unsigned int F(unsigned int m) { m=(m<<28)| (m<<20&0x0F000000)| (m<<12&0x00F00000)| (m<<4&0x000F0000)| (m>>4&0x0000F000)| (m>>12&0x00000F00)| (m>>20&0x000000F0)| (m>>28);//меняем местами все части по 4 бита while((m&0x0F)==0)//сдвигаем вправо по 4 бита, пока не сдвинем все нули, что раньше были старшими m=m>>4; return m; } int main(void) { unsigned int n; while ( printf("Number: ") && scanf("%u", &n) == 1 ) { printf("Before: %x\n", n); printf("After: %x\n", F(n)); printf("After(dec): %u\n", F(n)); } return 0; }
Объяснение кода листинга программы
- Переводим число из 10 в 16 систему исчисления
- Объединяем все числа из 16 системы исчисления в одно число
- Сдвигаем все биты числа на определенное количество позиций вправо или влево
- Меняем местами все части числа по 4 бита
- Сдвигаем вправо по 4 бита, пока не сдвинем все нули, что раньше были старшими
- Возвращаем полученное число
- Выводим исходное число
- Выводим полученное число в 16 системе исчисления
- Выводим полученное число в десятичной системе исчисления
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д