How to operate on bit strings > 64 bits

Hi all,

I have a matrix of 300 by 15,000 which is intended for my problem of:

** 300 data items to be distributed to 15,000 receivers, with**

each data item may go to one or more (up to 15,000) receivers, and

each receiver may receive one or more (up to 300) data items.

The actual distribution mechanism has the capability to deliver

multiple data items to multiple receivers in one same round,

this may be unusual but it's something I definitely should take

advantage of.

So I need to figure out a good set of distribution grouping

in order to utilize the distribution mechanism advantage to

minimize my total distribution cost - time especially.

It seems like that whichever heuristic that I may choose to work on,

I will need to operate on the data/receiver relationship matrix

extensively. This matrix is large but simple, i.e. it's a binary

relationship matrix, each entry simply indicates that

"if this data goes to this receiver or not".

I certainly will have a lot of groupings to explore, and if these

data/receiver relationship can be expressed in one long bit string

for each data or each receiver, and if I can AND/OR/XOR... on

these long bit strings straightforwardly... My exploration will

at least have a computational feasibility.

**My problems at hand are thus:**

1. How do I represent a bit string that carries more than 64 bits in C?

And which will allow me to -

2. Operate on these bit strings with primitive C logical operators efficiently?

I've looked into packed structures, but found no way to operate

on a structuralized long bit string with primitive C logical operators.

Suggestions, advice, tutorials please?