从"(签名)-1"到"无符号长"的转换是否标准化?

Eva*_*oll 3 c++ unsigned signed specifications type-conversion

这个答案中,你可以找到这个评论:

严格地说,在转换之前两个数字的位表示是相同的并不重要.即使使用1的补码或带符号的幅度表示,(带符号)-1到无符号长的转换也总是会产生ULONG_MAX.(转换后的位模式将相同).

我知道你可以-1用其他方式代表Two's Compliment,这是一个有效的补充,应该在我的答案中.但是,在这样的实现中,依赖转换是否安全ULONG_MAX

lll*_*lll 5

是的,无论实际表示如何,都可以保证:

[conv.integral](强调我的)

可以将整数类型的prvalue转换为另一个整数类型的prvalue.可以将未范围的枚举类型的prvalue转换为整数类型的prvalue.

如果目标类型是无符号的,则结果值是与源整数一致的最小无符号整数(模2 n ,其中n是用于表示无符号类型的位数).[注意:在二进制补码表示中,此转换是概念性的,并且位模式没有变化(如果没有截断). - 结束说明]