Как смоделировать сложение чисел на битовом уровне? - C (СИ)
Формулировка задачи:
Есть два значения: 141 и 115. Как смоделировать их сложение на битовом уровне?
Решение задачи: «Как смоделировать сложение чисел на битовом уровне?»
textual
Листинг программы
#include <stdio.h>
void showBinary(int x); //прототип функции для показа чисел в двоичном виде
int main()
{
int a=141;
int b=115;
showBinary(a);
printf("%35c\n",'+'); //знак + с отступом
showBinary(b);\
puts("===================================");
showBinary(a+b);
return 0;
}
void showBinary(int x)
{
int i;
int mask; //создадим битовую маску
mask=1<<31;
for (i=1;i<=32;i++)
{
putchar( x&mask ? '1' : '0' );
if (!(i%8)) putchar(' ');
x<<=1;
}
puts("");
}
Объяснение кода листинга программы
В этом коде происходит сложение двух чисел a и b, и вывод их двоичного представления. Вот список действий:
- Объявление переменных:
- a = 141
- b = 115
- mask = 1<<31 (битовая маска)
- Вызов функции showBinary(a) для вывода двоичного представления числа a.
- Вывод символа
+с отступом. - Вызов функции showBinary(b) для вывода двоичного представления числа b.
- Вывод строки
===================================для разделения результатов. - Выполнение сложения a и b и сохранение результата в переменную showBinary(a+b).
- Возврат 0 из функции main(), что означает успешное выполнение программы.
- В функции showBinary(x) создается переменная i для цикла.
- Создается переменная mask, которая будет использоваться как битовая маска.
- Устанавливается начальное значение mask равным 1<<31.
- Запускается цикл от 1 до 32.
- В каждой итерации цикла проверяется, является ли текущий бит числа x (x&mask) равным 1. Если да, то выводится символ '1', иначе выводится символ '0'.
- Если текущий бит числа x равен 1, то выводится символ '1', иначе выводится символ '0'.
- Если текущий бит числа x равен 1, то выводится символ '1', иначе выводится символ '0'.
- Если текущий бит числа x равен 1, то выводится символ '1', иначе выводится символ '0'.
- Если текущий бит числа x равен 1, то выводится символ '1', иначе выводится символ '0'.
- Если текущий бит числа x равен 1, то выводится символ '1', иначе выводится символ '0'.
- Если текущий бит числа x равен 1, то выводится символ '1', иначе выводится символ '0'.
- Если текущий бит числа x равен 1, то выводится символ '1', иначе выводится символ '0'.
- Число x сдвигается вправо на 1 бит (x<<=1).
- Цикл завершается.
- Выводится символ новой строки ('\n').
- Функция showBinary(x) завершается.
- Выводится двоичное представление суммы a и b.