32位int 最小负整数
来源:互联网 发布:淘宝补单方法 编辑:程序博客网 时间:2024/05/21 07:56
以下代码的执行结果是().
1
2
3
4
int main(){
int i=-2147483648;
return printf("%d,%d,%d,%d",~i,-i,1-i,-1-i);
}
正确答案: D 你的答案: C (错误)
A. 0,2147483648,2147483649,2147483647
B. 0,-2147483648,-2147483647,2147483647
C. 2147483647,2147483648,2147483649,2147483647
D. 2147483647,-2147483648,-2147483647,2147483647
解析:
首先要知道-2147483648是32位int所能表示的最小负整数
原码:1000 0000 0000 0000 0000 0000 0000 0000
若按正常的计算补码
取反码:11111 1111 1111 1111 1111 11111 1111 1111
加1:0000 0000 0000 0000 0000 0000 0000 0000就与0的补码一样
所以,规定-2147483648的补码为1000 0000 0000 0000 0000 0000 0000 0000
printf从右向左执行
-1-i :
先求-i : 单目运算符- 表示对该数取反加一(求补运算)
1000 0000 0000 0000 0000 0000 0000 0000取反得01111 11111111 1111 1111 11111 1111 1111
加一得1000 0000 0000 0000 0000 0000 0000 0000即-2147483648
-1的补码:11111 1111 11111111 1111 11111 1111 1111
相加得:01111 1111 1111 1111 1111 11111 1111 1111
该码为正数,原码与补码相同:01111 1111 1111 1111 1111 11111 1111 1111即2147483647
1-i :
已求得-i的补码:1000 0000 0000 0000 0000 0000 0000 0000即-2147483648
1的补码:0000 0000 00000000 0000 0000 0000 0001
相加得1000 0000 0000 0000 0000 0000 0000 0001
该补码的原码为1111 1111 1111 1111 1111 11111 1111 1111即-2147483647
-i:
已求得-i的补码:1000 0000 0000 0000 0000 0000 0000 0000
取反加一的原码:1000 0000 0000 0000 0000 0000 0000 0000即-2147483648
~i:
I的补码:1000 0000 00000000 0000 0000 0000 0000
取反得:01111 1111 1111 1111 1111 11111 1111 1111即2147483647
所以答案为2147483647,2147483648,2147483649,2147483647
- 32位int 最小负整数
- 反转一个32位 int 类型整数
- EXGCD 求最小非负整数解
- 判断int非负整数为几位数
- 正则表达式之非负整数或者两位小数
- 扩展欧几里德算法 x的最小非负整数解 xy是否有非负整数解
- 32位int和64位int
- 求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同
- C语言实现两个int(32位)整数m和n的二进制表达中找不同位
- 高精度非负整数
- 扩展欧几里得求最小非负整数解 (POJ 1061 青蛙约会为例)
- 如何获取int类型最大及最小整数值
- 求两个不超过100位的非负整数的和,差,乘,除
- int my_atof(char *str) 将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)
- 一个正整数去掉s位后得到最小整数
- 编程实现:在32bit编程环境下,两个int型整数的二进制码有多少位不同
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'BaseResultMap'
- 设置SOAPFaultException中SOAPFault的内容
- Ubuntu 添加应用程序快捷方式
- JVM调优总结 -Xms -Xmx -Xmn -Xss(转)
- 【Java学习笔记】19:Guarded Suspension Pattern
- 32位int 最小负整数
- 110-获取接口信息(二)
- RMI技术验证哥德巴赫猜想
- Fastjson可以解析类的嵌套吗?
- Go语言中的type含义(转载)
- 夜神模拟器使用的小问题
- Python 简单的定制一个计时器
- 绑定在标签中的事件如何获取当前元素
- eclipse中svn用户名密码切换