C++移位得到int型最大值
生活随笔
收集整理的这篇文章主要介绍了
C++移位得到int型最大值
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
C++里默认int型1的二进制表示为:
0000 0000 0000 0000 0000 0000 0000 0001如果左移31位,会得到最小值
1<<31 //会得到-2147483648,即int型最小值即
1000 0000 0000 0000 0000 0000 0000 0000因为int类型是有符号的,第一位为符号位,如果是1表示负数,为什么1<<31 会得到最小值,因为int是使用补码表示的。如果我们想得到最大值可以使用如下代码:
cout << (1<<31)-1 << endl;//有符号int最大值 /*输出得到: 2147483647 */补码部分概念:
负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。
计算机中:
原码和反码表示的0有两种形式+0和-0,而我们知道,+0和-0是相同的。
这样,8位的原码和反码表示的整数的范围就是-127+127(1111111101111111),而采用补码表示的时候,00000000是+0, 即0;
10000000不再是-0,而是-128,这样,补码表示的数的范围就是-128~+127了,不但增加了一个数得表示范围,而且还保证了0编码的唯一性。
转载自:
https://segmentfault.com/q/1010000006201661?_ea=1048818
https://blog.csdn.net/studyvcmfc/article/details/7605752
总结
以上是生活随笔为你收集整理的C++移位得到int型最大值的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: batch批处理程序easyadd——追
- 下一篇: c++将.cpp编译为.so文件