C++中为什么-3用unsigned形式输出结果为4292967293
发布网友
发布时间:2024-10-02 16:59
我来回答
共2个回答
热心网友
时间:2024-10-04 08:49
32 位无符号数的最大值是
4292967295
范围是0 - 4292967295
因此-1 是4292967295
-2 是4292967294
-3 是4292967293
简单理解就是范围像个圆,0 + 1 是1
0 - 1就是4292967295
具体参考二进制,计算机的符号有无的区别等,计算方式等。
热心网友
时间:2024-10-04 08:50
在计算机系统中,数值一律用补码来表示,-3的补码为
原码:1000 0000, 0000 0000, 0000 0000, 0000 0011
取反:1111 1111, 1111 1111, 1111 1111, 1111 1100
加1 :1111 1111, 1111 1111, 1111 1111, 1111 1101
所以转为unsigned后补码为11111111111111111111111111111101,
而正数的补码即原码,所以原码一样,即 4294967293