添加两个有符号或无符号整数

Edu*_*rdo 9 c c++ integer twos-complement

自从我上次在位和字节级别进行编程以来,已经很长时间了,并且想要确认那些日子我似乎记得的东西:

假设我有两个相等长度的整数(1,2,4,8个字节;无所谓),我将它们加起来:如果它们是有符号或无符号的,则总和的逐位结果是否不同.换句话说:无论它们是有符号整数还是无符号整数,这些位最终都是相同的吗?

我的直觉和脆弱的记忆告诉我他们会,但我只想确认一下.谢谢.

Rei*_*ica 13

假设实现使用2的补码作为有符号整数的表示,那么结果将是相同的.在其他陈述中,他们不会.

编辑

正如评论中所指出的,签名加法中的溢出是未定义的行为,这意味着在这种情况下没有任何关于结果的说法.

  • 并且在添加UB时,它们也不会. (3认同)