You cannot allocate memory on any computer - that I'm aware of - in amounts smaller than one byte, definetly not on a PC.
Also, with .net you aren't allocating any memory, thats all looked after for you unless you're using C++ in .Net (with garbage collection it's possibly better to say you're "using" memory rather than "allocating" memory, it's practically impossible to tell if a call to new will allocate memory or reuse memory).
If you are using C++, even though you might ask for one byte, the Operating System will allocate a block of memory for your program to use, which will almost certinaly be more than one byte.
If you want to store an array of bits you can roll your own BitArray collection, where the minimum you'll store is a byte (actually you should use ints) and you pack and unpack the bits into and out of that.
Luckly .Net 3.5 comes with a BitArray class (as apparently did 1.0, 1.1, 2.0, 3.0 . . . thanks Joe)
However, there is always a cost. Packing and unpacking bits will be slower than keeping an array of booleans.
Hope this helps