Из стандарта (4.7) это выглядит как преобразование из int в unsigned int, когда они оба используют одинаковое количество бит, чисто концептуально:
Если тип назначения не указан, результирующее значение является наименьшим беззнаковое целое, совпадающее с целым числом источника (по модулю 2 n, где n - количество бит, используемых для представления неподписанного типа). [Примечание: в представление двойного дополнения, это преобразование является концептуальным и в битовой схеме нет изменений (если нет усечения). - end note]
Итак, в этом направлении преобразование сохраняет битмаску. Я не уверен, что стандарт гарантирует то же самое для преобразования из unsigned int в int (опять же, при условии, что используется такое же количество бит). В стандарте здесь говорится:
Если тип назначения подписан, значение не изменяется, если оно может быть представленные в типе назначения (и ширине битового поля); в противном случае, значение определяется реализацией.
Что здесь означает "тип назначения"? Например, 2 ^ 32-1 не может быть представлен 32-битным int. Означает ли это, что он не может быть представлен в целевом типе, и поэтому нельзя предположить, что бит-шаблон останется прежним?