Перевод из 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; }
Объяснение кода листинга программы
- Включаем стандартную библиотеку файлов
- Функция is_bincmp принимает 4 аргумента: a - первое число для сравнения b - второе число для сравнения i - номер бита, с которого начинается сравнение (считая справа налево) j - номер бита, на который заканчивается сравнение (считая справа налево)
- Определяем значение h - это количество бит, которые мы хотим перенести налево (начиная с 0-го бита)
- Сдвигаем a и b налево на значение h, затем сдвигаем обратно на значение h, чтобы получить нужный нам бит
- Вычисляем a и b с учетом индексации с нуля
- Возвращаем результат сравнения a и b
- В функции main() задаем значения a и b
- Используем функцию is_bincmp() для сравнения a и b на битах 4 и 16 (это неявное сравнение двух строк)
- Выводим соответствующее сообщение в зависимости от результата сравнения
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д