我了解二进制补码表示法。我想知道在实现上,int和unsigned int之间有哪些具体的区别。我会说:
- 比较是不同的(符号位将改变比较的执行方式)。
- 乘法是不同的(我取模,乘以这些模数,并根据两个操作数的符号对结果进行补码)。
- 除法是不同的(与乘法相同的原因)。
- 加法和减法看起来相同
int
是二进制补码,而unsigned int
不是二进制补码,因此在int
中,2^31
是负数,但在unsigned int
中,2^31
是正数。对于小于 31 的幂,在int
和unsigned int
中所有位都是正数。 - Mohsen_FatemiC
的。OP明确标记了C++
,你不能假设它们的行为是相同的。 - Simon Kraemer