欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算机系统

程序员文章站 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

相关标签: c语言