기본적으로 FD를 여러 개 저장할 때 효율적으로 저장하기 위해 비트연산을 사용한다.
만약 0, 1, 2, 3, 4, 5, 6, 7 총 8개의 fd가 있다고 가정하자.
이를 8개의 각기다른 int형 변수에 담는다면
총 차지하는 메모리 공간은 (4 byte * 8) = 32 byte가 된다.
이는 쓸데없이 많은 메모리 공간을 차지하게 한다.
fd의 경우 중복된 값이 없고 정수이기 때문에 비트단위로 저장하는 것이 가능하다.
즉, 다음과 같이 정리할 수 있다.
0 → 1 << 0
1 → 1 << 1
2 → 1 << 2
3 → 1 << 3
4 → 1 << 4
5 → 1 << 5
6 → 1 << 6
7 → 1 << 7
만약 fd를 1, 3, 5를 저장한다고 가정하면 다음과 같이 값이 들어간다.
00101010