Signed Bit Fields

Signed Bit Fields

A bit field can be signed or unsigned. According to the C++ standard, a signed bit field may be represented in one of three ways:

  • two’s complement
  • one’s complement
  • sign bit

In practice, most modern architectures use two’s complement. On such systems, a signed bit field of two bits can safely hold the values -2, -1, 0, 1, 2. However, on implementations that use a sign bit, a signed bit field of two bits can hold the values -1, 0, 1.

  struct BITS  {    signed char a: 2; //range: -1,0 1 or -2,-1,0,1,2 depending on platform    unsigned signed char b: 1; // possible values: 0,1  };

If you’re using signed bit fields in your apps, check how the target platform represents signed bit fields to avoid rollover bugs.


Share the Post: