Как преобразовать целочисленные арифметические операции в логические операции с использованием побитовой обработки? [закC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать целочисленные арифметические операции в логические операции с использованием побитовой обработки? [зак

Сообщение Anonymous »

Например, у меня есть простая функция:

Код: Выделить всё

int4_t add(int4_t a, int4_t b) {
return a + b;
}
Мне нужно исключить целочисленные арифметические операции и использовать вместо них логические операции (также известные как битовая обработка).

Код: Выделить всё

int4_t add(int4_t a, int4_t b) {
// Extract individual bits of a and b
bool a0 = a & 1;
bool a1 = (a >> 1) & 1;
bool a2 = (a >> 2) & 1;
bool a3 = (a >> 3) & 1;

bool b0 = b & 1;
bool b1 = (b >> 1) & 1;
bool b2 = (b >> 2) & 1;
bool b3 = (b >> 3) & 1;

// Compute sum and carry for each bit using full adder logic
bool s0 = a0 ^ b0;
bool c1 = a0 & b0;

bool s1 = a1 ^ b1 ^ c1;
bool c2 = (a1 & b1) | (a1 & c1) | (b1 & c1);

bool s2 = a2 ^ b2 ^ c2;
bool c3 = (a2 & b2) | (a2 & c2) | (b2 & c2);

bool s3 = a3 ^ b3 ^ c3;
bool c4 = (a3 & b3) | (a3 & c3) | (b3 & c3);

// Reassemble the result
int4_t result = (s0) | (s1 

Подробнее здесь: [url]https://stackoverflow.com/questions/79306443/how-to-convert-integer-arithmetic-operations-to-boolean-operations-using-bit-bla[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»