Перевод из 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, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д