For your definition of uniform, the number has to be in the form 00011111 or 11110000. Consider the former one (zeros followed by ones).
Add one to the value. If it is uniform, it would have exactly one 1 bit, which means a power of 2.
To test whether a value is a power of two, use (x & (x - 1)) == 0. To shorten the code we don't need to add one in the previous step. Instead we check (x & (x + 1)) == 0
Apply this to the other case by NOT-ing the initial value and repeat the above process.
#include <cstdio>
bool isuniform(unsigned char x) {
  unsigned char y = ~x;
  return (x & (x + 1)) == 0 || (y & (y + 1)) == 0;
}
int main() {
  printf("%d\n", isuniform(0));   // 00000000
  printf("%d\n", isuniform(1));   // 00000001
  printf("%d\n", isuniform(3));   // 00000011
  printf("%d\n", isuniform(7));   // 00000111
  printf("%d\n", isuniform(15));  // 00001111
  printf("%d\n", isuniform(31));  // 00011111
  printf("%d\n", isuniform(63));  // 00111111
  printf("%d\n", isuniform(127)); // 01111111
  printf("%d\n", isuniform(255)); // 11111111
  printf("%d\n", isuniform(254)); // 11111110
  printf("%d\n", isuniform(252)); // 11111100
  printf("%d\n", isuniform(248)); // 11111000
  printf("%d\n", isuniform(240)); // 11110000
  printf("%d\n", isuniform(224)); // 11100000
  printf("%d\n", isuniform(192)); // 11000000
  printf("%d\n", isuniform(128)); // 10000000
  //----------
  printf("%d\n", isuniform(2));
  printf("%d\n", isuniform(4));
  printf("%d\n", isuniform(50));
  printf("%d\n", isuniform(123));
  printf("%d\n", isuniform(129));
  printf("%d\n", isuniform(253));
  return 0;
}