I've been working on a project that needs to list all the drives on a computer (it's kind of a file explorer, but without using the standard one provided by windows). I've searched and found the function GetLogicalDrives(), which does exactly what I want.

However, the return value is a DWORD of which bit-position 0 represents the existince of drive A:/, bit-position 1 of B:/ and so on. I've found a few forum posts about bit-shifting, with which I have no experience.

This is what I got so far:

int main() {

  int bits[32]; // Array to put in the seperate bits of the DWORD
  DWORD input = 9; // This should give 10010000000000000000000000000000
  int i = 0; // Counter

  /* Looping through every bit of the DWORD: */
  for (i = 0; i < 32; i++) {
     bits[i] = input >> i;
     printf("bits[%d] = %d\n", i, bits[i]);


But it isn't give the correct output. Does anyone know how to solve my problem :)?

Does anyone know how to do this?

Thanks in advance,

I would write a few test programs that manipulate bits so you can understand what bit-shifting, ANDing, and ORing is all about. Then when you understand these basic principals, go back to your program with your new understanding.

This article has been dead for over six months. Start a new discussion instead.