Битовые поля

Millen

пользователь вводит с клавиатуры 2 беззнаковых длинных целых числа a, b. Вывести на консоль множества A, B, которые представляют битовые поля a и b, а также их объедиение, пересечение, разность и исключающую разность.Подскажите, что вообще здесь требуется сделать, а то как-то никак..
2 ответа

Millen

Может что-то типа такого:
#include <iostream>
 
void print_set (unsigned long x);
 
int main()
{
    unsigned long a , b;
 
    std::cout << "a = ";
    std::cin >> a;
    std::cout << "b = ";
    std::cin >> b;
    
    std::cout << "Set A:     ";
    print_set(a);
    std::cout << "Set B:     ";
    print_set(b);
    std::cout << "Set A | B: "; //объединение
    print_set((a|b));
    std::cout << "Set A & B: "; //пересечение
    print_set((a&b));
    std::cout << "Set A - B: "; //разность
    print_set((a&(~b)));
 
    system("Pause");
    return 0;
}
 
void print_set (unsigned long x)
{
    for(int i = 8 * sizeof(x); i > 0 ; i--)
        std::cout << ((x >> (i - 1)) & 0x1);
    std::cout << std::endl;
}
Что такое исключающая разность не знаю...


Millen

О, besstiaa, спасибо большое!)