fork(1) download
  1. #include <iostream>
  2. #include <bitset>
  3. #include <cstdio>
  4.  
  5. template <size_t N>
  6. std::bitset<N> sum (const std::bitset<N>& b1, const std::bitset<N>& b2) {
  7. std::bitset<N> result;
  8. bool carry = false;
  9. for (size_t i = 0 ; i < N ; ++i) {
  10. unsigned value = b1[i] + b2[i] + (carry ? 1 : 0);
  11. carry = value > 1;
  12. result[i] = value % 2;
  13. printf ("[%d] %u %u -> %u (%d)\n", (int)i, (unsigned)b1[i], (unsigned)b2[i], (unsigned)result[i], (int)carry);
  14. }
  15. return result;
  16. }
  17.  
  18. int main () {
  19. std::bitset<10> first(20);
  20. std::bitset<10> second (15);
  21. std::cout << sum (first, second).to_ulong() << std::endl;
  22. }
Success #stdin #stdout 0s 4776KB
stdin
Standard input is empty
stdout
[0] 0 1 -> 1 (0)
[1] 0 1 -> 1 (0)
[2] 1 1 -> 0 (1)
[3] 0 1 -> 0 (1)
[4] 1 0 -> 0 (1)
[5] 0 0 -> 1 (0)
[6] 0 0 -> 0 (0)
[7] 0 0 -> 0 (0)
[8] 0 0 -> 0 (0)
[9] 0 0 -> 0 (0)
35