计算机系统
程序员文章站
2022-04-21 12:02:08
...
题目:以下C语言程序输出为什么是0?
#include <stdio.h>
int main(void) {
printf("%f",10/2);
return 0;
}
解释:
10/2=5,为无符号整型数据,占据32位。
- 原码:00000000000000000000000000000101
- 反码:111111111111111111111111111111111010
- 补码:111111111111111111111111111111111011
因为是用%f
的格式输出,所以计算机会将整形数据当作浮点型数据解释
IEEE754浮点数标准
符号 | 阶码 | 尾数 |
---|---|---|
0 | 1~8 |
9~31
|
其中:
第0位为符号位
第1~8位为移码表示的阶码
剩下24为二进制原码小数表示的尾数
因为计算机会将现实世界的数据(即真值)先转换为机器数(即补码),故程序中5这个数在计算机中用浮点数解释如下:
符号 | 阶码 | 尾数 |
---|---|---|
1 | 111 11111 | 111111111111111111111111101 |
阶码全为1,数值为0
上一篇: 计算机系统
下一篇: 购物车放大镜效果(模拟jd的商品页面)