uint32_t data = 0xFFFFFFFF; Serial.println(data, BIN); data = 0xFFFFFFFF; bitClear(data, 30); Serial.println(data, BIN); data = 0xFFFFFFFF; bitClear(data, 31); Serial.println(data, BIN); On my mega outputs: 11111111111111111111111111111111 10111111111111111111111111111111 1111111111111111111111111111111 Are you sure you aren't mistaking the fact that println doesn't print leading 0's for the number being nothing but 1's? Try printing as hex, then all the numbers will be the same width: FFFFFFFF BFFFFFFF 7FFFFFFF