Программы на C++. Форум разработчиков
Anonymous
Как преобразовать функцию C/C++ с целочисленными арифметическими операциями в новую функцию, содержащую только логически
Сообщение
Anonymous » 25 дек 2024, 00:10
Например, у меня есть простая функция:
Код: Выделить всё
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-a-c-c-function-with-integer-arithmetic-operations-to-a-new-func[/url]
1735074649
Anonymous
Например, у меня есть простая функция: [code]int4_t add(int4_t a, int4_t b) { return a + b; } [/code] Мне нужно исключить целочисленные арифметические операции и использовать вместо них логические операции (также известные как битовая обработка). [code]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-a-c-c-function-with-integer-arithmetic-operations-to-a-new-func[/url]