how many bits a random-access memory's cell contains?
There is almost no chance that your memory is bit-addressed. The most likely situation is that your addresses are byte-addresses. And when you get the value of a 32-bit variable, the question is whether that address points at the Most Significant Byte or the Least Significant Byte of that 4-byte value - which is architecture dependent (e.g. x86 is little-endian, while MIPS is big-endian).

To give you an example in C, assuming your variable var has the value 0xDEADBEEF it might be stored in memory in one of two ways:

Big-Endian (because the address 0x125 points to the MSB)

-------------+--------+--------+--------+--------+
base address |              offset               | 
-------------+--------+--------+--------+--------+
             |    0   |    1   |    2   |    3   | 
-------------+--------+--------+--------+--------+
    0x125    |  0xDE  |  0xAD  |  0xBE  |  0xEF  |
-------------+--------+--------+--------+--------+


or Little-Endian (because the address 0x125 points to the LSB)

-------------+--------+--------+--------+--------+
base address |              offset               | 
-------------+--------+--------+--------+--------+
             |    0   |    1   |    2   |    3   | 
-------------+--------+--------+--------+--------+
    0x125    |  0xEF  |  0xBE  |  0xAD  |  0xDE  |
-------------+--------+--------+--------+--------+


As the granularity of access to the memory at the instruction set level is likely no smaller than a byte, if you want to modify individual bits, you need to read from the memory at its minimum granularity (likely a byte), modify its contents with bit-manipulation operations (|, &amp;, ~, etc.), and write back the memory.