初学者求各位帮忙解答enum的位或运算的有关问题[C++]

菜鸟求各位帮忙解答enum的位或运算的问题[C++]
enum Key
{
  A = 1, B=2, C=4, D=8
};

void main()
{
  int val = A | B | D; //结果是11
  cout<<val<<endl;
}
我想问的是, 如果我知道值为11, 通什么方法或算法,能知道这个11是 A|B|D 得出来的?
也就是说,当获得一个值为6时, 怎么知道这个值是 B|C 得出

谢谢各位!!

------解决方案--------------------
全部枚举计算出来,然后去查.

C/C++ code
0
1
A
2
B
3
A|B
4
C
5
A|C
6
B|C
7
A|B|C
8
D
9
A|D
10
B|D
11
A|B|D
12
C|D
13
A|C|D
14
B|C|D
15
A|B|C|D
16
17