无符号整数的负数会发生什么
what happens with the negative of an unsigned integer?
由于文字0xffffffff需要32位数字,它可以表示为无符号int,但不能表示为有符号int,并且是无符号int类型。但是,无符号整数的负数会发生什么?
#include <iostream>
#include <limits>
int main()
{
int N[] = {0,0,0};
if ( std::numeric_limits<long int>::digits==63 and
std::numeric_limits<int>::digits==31 and
std::numeric_limits<unsigned int>::digits==32 )
{
for (long int i = -0xffffffff; i ; --i)
{
N[i] = 1;
}
}
else
{
N[1]=1;
}
std::cout << N[0] <<N [1] << N[2];
}
输出:010
根据定义,没有负无符号整数。
当您超出无符号整数的下限时,该值将从可能的最高值开始"环绕"。(反之亦然)。
当将负"有符号"值转换为无符号值时,也会触发此机制。
因此,有符号值-1被转换为无符号值$maximumUnsignedValue
。类似地,有符号值-$maximumSignedValue
被转换为无符号值$maximumUnsignedValue - $maximumSignedValue + 1
。
相关文章:
- 如何打印boost多精度128位无符号整数
- C++模板函数,用于比较任何无符号整数和有符号整数
- 在线程中读取无符号整数时,c++ 位是否以原子方式切换?
- Constexpr 可变参数模板,用于对无符号整数进行重新排序
- 为什么 Clang 和 GCC 中两个无符号整数之和的结果类型不同
- 从 std::string 转换为 const 无符号整数
- 迭代器和无符号整数的重载 + 运算符
- C++,概念不适用于无符号整数作为结果类型?
- 在C++中,将无符号整数转换为八进制表示,反之亦然的最佳方法是什么
- 原子式清除无符号整数的最低非零位
- 计算机使用什么方法添加无符号整数
- boost::任何带有结构体和无符号整数
- 添加有符号和无符号整数
- 如何安全地比较两个无符号整数计数器?
- 计算 (64 位无符号整数) * (64 位无符号整数) 的商除以 2^64
- “*(无符号整数*)((无符号整数)块 + n*i)”是什么意思
- 无符号整数的负数会发生什么
- c++支持原生无符号整数,而java不支持的优点是什么?
- 我的For循环出了什么问题?我得到警告:有符号和无符号整数表达式之间的比较[-Wsigncompare]
- c++中从字符串生成唯一无符号整数的最佳方法是什么?