diff --git a/src/common/bitfield.h b/src/common/bitfield.h index 0e63b574c..377b9c3e7 100644 --- a/src/common/bitfield.h +++ b/src/common/bitfield.h @@ -119,8 +119,8 @@ struct BitField } else if constexpr (std::is_signed_v) { - constexpr int shift = 8 * sizeof(DataType) - BitCount; - return (static_cast((data & GetMask()) >> BitIndex) << shift) >> shift; + constexpr int shift = 8 * sizeof(DataType) - BitCount + 1; + return (static_cast(data >> BitIndex) << shift) >> shift; } else {