Перевод из 10-ной системы счисления в 2-ичную - C (СИ)

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

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

Сравнение указанных последовательностей битов в двух разных заданных числах. Тоесть берем 2 числа в 10ой системе и переводим ее в 2ую, потом в этих двоичных нужно взять с i до j элемента и сравнить
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <malloc.h>
  5. void DecToBin (int n)
  6. { int i=0;
  7. if (n>=2)
  8. {
  9. DecToBin( n/2 );
  10. }
  11. printf("%d",n % 2);
  12. }
  13. int main ()
  14. {
  15. int n,m;
  16.  
  17. printf("n = ");
  18. scanf("%d",&n);
  19. printf("\nm = ");
  20. scanf("%d",&m);
  21. //-----------fist------------------------------
  22. printf(" (Dec) = ");
  23. DecToBin( n);
  24. printf("(Bin)/n");
  25. //-------second--------------------------------
  26. printf(" \n(Dec) = ");
  27. DecToBin( m);
  28. printf("(Bin)/m");
  29.  
  30. return 0;
  31. }

Решение задачи: «Перевод из 10-ной системы счисления в 2-ичную»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. //нумерация битов с право налево, а индексация с нуля
  4. int is_bincmp(unsigned int a, unsigned int b, int i, int j){
  5.     const unsigned int h = (sizeof(a) << 3) - j;
  6.     a = ((a << h) >> h) >> i;
  7.     b = ((b << h) >> h) >> i;
  8.     return (a == b);
  9. }
  10.  
  11. int main(void){
  12.     unsigned int a = 0xABCDEF;
  13.     unsigned int b = 0x12CDE6;
  14.  
  15.     if(is_bincmp(a, b, 4, 16))
  16.         puts("yes");
  17.     else
  18.         puts("not!");
  19.     return 0;
  20. }

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

  1. Включаем стандартную библиотеку файлов
  2. Функция is_bincmp принимает 4 аргумента: a - первое число для сравнения b - второе число для сравнения i - номер бита, с которого начинается сравнение (считая справа налево) j - номер бита, на который заканчивается сравнение (считая справа налево)
  3. Определяем значение h - это количество бит, которые мы хотим перенести налево (начиная с 0-го бита)
  4. Сдвигаем a и b налево на значение h, затем сдвигаем обратно на значение h, чтобы получить нужный нам бит
  5. Вычисляем a и b с учетом индексации с нуля
  6. Возвращаем результат сравнения a и b
  7. В функции main() задаем значения a и b
  8. Используем функцию is_bincmp() для сравнения a и b на битах 4 и 16 (это неявное сравнение двух строк)
  9. Выводим соответствующее сообщение в зависимости от результата сравнения
  10. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы