0<0x80000000与0x80000000是32位有符号整型最小值的随记
来源:互联网 发布:牛贝 微信淘宝客 编辑:程序博客网 时间:2024/05/16 11:35
关于0<0x80000000与0x80000000是32位有符号整型最小值是否冲突作一点记录。
在C/C++中,0x80000000是32位有符号整型的最小值,32位有符号整型的范围是 -2147483648到2147483647,但是当在程序中直接引用0x80000000时,其会按原码计算,此时其对应的字面常量值为2147483648 ,超出了int32位整型数的范围,根据16进制的转换关系超出范围部分的自动转换为unsigned int型,于是在程序中直接引用0x80000000,其值为2147483648,故在一些例子中,如0<0x80000000会判断成立。进一步延伸,此时不止是0x80000000,介于0x80000000与0xffffffff之间的任一以十六进制表示的数均是unsigned int型,其值均为大于0的常数。
上述与0x80000000是32位有符号整 型的最小值这一事实并不冲突,在其作为32位有符号整型的最小值时,经常有如下例子const int a=0x80000000,在此时已经将变量a确定为了有符号的int型变量,故在将0x80000000赋给a时,0x80000000会被当作一个负数,其被视作事实上的补码进行处理,故在输出a时,其值为-2147483648,在0<a时,也将会判定为false。
故这个问题的本质在于直接输入大于0x80000000的数时,计算机将其处理为原码而非补码。
阅读全文
1 0
- 0<0x80000000与0x80000000是32位有符号整型最小值的随记
- 0X7FFFFFFF,0X80000000
- $id + 0x80000000是什么意思?
- Why is 0 < -0x80000000?
- 键盘钩子回调函数中的lParam & 0x80000000
- Android_MediaPlayer:java.io.IOException: setDataSource failed.: status=0x80000000
- android 使用mediaplayer播放报java.io.IOException: setDataSourceFD failed.: status=0x80000000的问题
- java.io.IOException: setDataSource failed.: status=0x80000000问题的解决
- 关于0x80000000为什么等于-2147483648和负数在内存上储存的问题
- 关于0x80000000为什么等于-2147483648和负数在内存上储存的问题
- Android - Error: "java.io.IOException: setDataSource failed.: status=0x80000000"
- cout<<"a1="<<a<<endl; cout<<"a2="<<-0x80000000<<endl;
- 有关32位机整型和无符号整型取值的最大值最小值问题
- 32位有符号整型举例
- 关于有符号整型int最小值的取值理解
- 无符号整型与有符号整型
- 16位有符号整型数据的输出~~~~
- 32位非0整型
- Myeclipse快捷键大全
- 对于c/c++中char型可以输入整型,而int型却不能输入字符
- Unfair Poll CodeForces
- 范式的理解
- JAVA-JVM参数
- 0<0x80000000与0x80000000是32位有符号整型最小值的随记
- 权利的游戏-第七季第七集
- nuttx-smartfs
- Spark-Sql启动报错:Error creating transactional connection factory
- [Java] 静态方法与非静态方法的区别
- java数组发牌
- Linux查看程序端口占用情况
- Learn Java01
- TCP/IP协议理论