標準(4.7)から、intからunsigned intへの変換は、両方が同じビット数を使用する場合、純粋に概念的なもののように見えます。
宛先タイプが符号なしの場合、結果の値は、ソース整数と一致する最小の符号なし整数です(モジュロ2 n、nは符号なしタイプを表すために使用されるビット数)。[注:2の補数表現では、この変換は概念的なものであり、ビットパターンに変更はありません(切り捨てがない場合)。—エンドノート]
したがって、この方向では、変換によってビットマスクが保持されます。unsigned intからintへの変換について標準が同じことを保証しているかどうかはわかりません(ここでも、同じビット数が使用されていると仮定しています)。ここでの標準は次のように述べています。
宛先タイプが署名されている場合、宛先タイプ(およびビットフィールド幅)で表すことができれば、値は変更されません。それ以外の場合、値は実装によって定義されます。
ここでの「宛先タイプ」とは正確にはどういう意味ですか?たとえば、2^32-1は32ビット整数で表すことはできません。それは、宛先タイプで表現できないため、ビットパターンが同じままであると想定できないことを意味しますか?