Форум программистов, компьютерный форум CyberForum.ru

Сложение двоичных чисел, представленных в bitset - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выход за предел массива http://www.cyberforum.ru/cpp-beginners/thread631479.html
Здравствуйте, меня заинтересовала одна особенность массивов, а именно то что они не проверяются на количество элементов, из этого исходит то что с их помошью мы можем изменить/инициализировать совершенно не относящуюся к этому массиву переменную. Я бы хотел узнать возможно ли это ?
C++ Union с явными указателями или void*- что выбрать? В программе предполагается использование огромного количества указателей типа void*, по которым будут хранится объекты типов А и Х. Т.о. при обращении будет использоваться явное приведение типа указателя. Но как вариант рассматриваю вместо void* использовать union { A* pA; X* pX; }; Мне кажется, что и тот, и другой вариант должны быть одинаковы по части занимаемого объёма... http://www.cyberforum.ru/cpp-beginners/thread631465.html
Eclipse C++ библиотеки C++
Компилятору не нравится объявление библиотеки #include <iostream> Можно ли как то это исправить? компилятор >> eclipse-cpp-helios
НОЧД и НОНД(задача) C++
Здравствуйте! Тут на одном сайте задача есть: Для двух данных натуральных чисел найдите их наибольший четный и наибольший нечетный делители. Входные данные Вводятся два натуральных числа, разделенные пробелом. Числа не превосходят 10 в степени 9. Выходные данные Выведите два числа через пробел — наибольший общий четный делитель и наибольший общий нечетный делитель. Если какого-то из...
C++ Указатель на объект.объясните http://www.cyberforum.ru/cpp-beginners/thread631402.html
base - это базовый класс...first - это производный от base...iam() виртуальная функция, перегруженная в first... Вопрос: почему вызывается функция базового класса, а не first?.. #include <iostream> #include "classes.cpp" using namespace std; int main() { base ibase; first ifirst;
C++ GetModuleFileNameEx ошибка #include <iostream> #include <windows.h> #include <time.h> #include "main.h" #pragma comment(lib,"Psapi") using namespace std; //global ULONG crc_tab; подробнее

Показать сообщение отдельно
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
01.08.2012, 16:17     Сложение двоичных чисел, представленных в bitset
Как насчет битовых операций?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <size_t N>
std::bitset<N> sum (const std::bitset<N>& b1, const std::bitset<N>& b2) {
    std::bitset<N> result;
    char carry = 0;
    for (size_t i = 0 ; i < N ; ++i) {
        // упрощенное от (b1 | b2 | carry) & (!carry | (b1 & b2 & carry))
        result[i] = (b1[i] ^ b2[i]) ^ carry;
        carry = (b1[i] & b2[i]) | ((b1[i] ^ b2[i]) & carry);
        std::cout << "[" << i << "] " << b1[i] << " " << b2[i] << " -> " <<
          result[i] << " (" << static_cast<int>(carry) << ")" << std::endl;
    }
    //if (carry) {
      // тут еще можно на overflow проверить
      //std::cout << "Warning: Operation overflow." << std::endl;
    //}
    return result;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru