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