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

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

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

Сравнение указанных последовательностей битов в двух разных заданных числах. Тоесть берем 2 числа в 10ой системе и переводим ее в 2ую, потом в этих двоичных нужно взять с i до j элемента и сравнить
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>
 
void DecToBin (int n)
{  int i=0;
    if (n>=2)
    {
        DecToBin( n/2  );
 
    }
    printf("%d",n % 2);
 
}
 
int main ()
{
    int n,m;

    printf("n = ");
    scanf("%d",&n);
        printf("\nm = ");
        scanf("%d",&m);
//-----------fist------------------------------
    printf(" (Dec) = ");
            DecToBin( n);
    printf("(Bin)/n");
//-------second--------------------------------
    printf(" \n(Dec) = ");
            DecToBin( m);
    printf("(Bin)/m");

    return 0;
}

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

textual
Листинг программы
#include <stdio.h>
 
//нумерация битов с право налево, а индексация с нуля
int is_bincmp(unsigned int a, unsigned int b, int i, int j){
    const unsigned int h = (sizeof(a) << 3) - j;
    a = ((a << h) >> h) >> i;
    b = ((b << h) >> h) >> i;
    return (a == b);
}
 
int main(void){
    unsigned int a = 0xABCDEF;
    unsigned int b = 0x12CDE6;
 
    if(is_bincmp(a, b, 4, 16))
        puts("yes");
    else
        puts("not!");
    return 0;
}

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

  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
Похожие ответы