Advertisement
TwITe

Untitled

Aug 3rd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. //& для целых переменных
  2. int bit_and_for_int_f1(unsigned long a, unsigned long b) {
  3.     unsigned long c = a & b;
  4.     //cout << c << endl;
  5.     return c;
  6. }
  7.  
  8. //& для целых переменных без оператора &
  9. int bit_and_for_int_f2(unsigned long a, unsigned long b) {
  10.  
  11.     bitset <64> number_one(a);
  12.     //cout << number_one.to_ulong() << " = " << number_one << endl;
  13.     bitset <64> number_two(b);
  14.     //cout << number_two.to_ulong() << " = " << number_two << endl;
  15.     bitset <64> number;
  16.     for (int i = 63; i >= 0; i--) {
  17.         if (number_one[i] == 1) {
  18.             if (number_two[i] == 1) {
  19.                 number[i] = 1;
  20.             }
  21.             else {
  22.                 number[i] = 0;
  23.             }
  24.         }
  25.         else {
  26.             if (number_two[i] == 1) {
  27.                 number[i] = 0;
  28.             }
  29.             else {
  30.                 number[i] = 0;
  31.             }
  32.         }
  33.     }
  34.     //cout << endl;
  35.     //cout << number.to_ulong() << " = " << number;
  36.     return number.to_ulong();
  37. }
  38.  
  39. //тест & для целых переменных
  40. void can_bit_and() {
  41.     for (int i = 0; i < 1000000; i++) {
  42.         assert(bit_and_for_int_f1(i, i + 2) == bit_and_for_int_f2(i, i + 2));
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement