在c语言中,机器数如何表示一个负浮点数
c语言吧
全部回复
仅看楼主
level 7
例如-169.375的机器数补码形式为_____
2021年10月06日 08点10分 1
level 7
[泪]
2021年10月06日 10点10分 2
level 7
浮点数的表示是
(-1)^S * M * 2^E
S是符号位,为1是负数,为0是正数
M表示有效数字,大于等于1,小于2
2^E表示指数位
2021年10月06日 10点10分 3
level 7
举个例子,十进制的-5.0在二进制中相当于-101.0,就是-1 * 1.01 * 2^2
2021年10月06日 10点10分 4
level 7
在32位浮点数中,第1位是符号位S,后面的8位是指数E,剩下23位是有效数字M
2021年10月06日 10点10分 6
吧务
level 15
题目不严谨,没有说明这个浮点数是多少位的,所以答案至少可以有两个
写个代码可以很容易地得到答案,如下:
32位的float类型:
float f32=169.375;
printf("0x%x\n",*(unsigned int*)&f32);
结果是0x43296000
64位的double类型:
double f64=169.375;
printf("0x%llx\n",*(unsigned long long*)&f64);
结果是0x40652c0000000000
2021年10月06日 15点10分 7
机器码是二位的吧[泪][泪][泪]
2021年10月07日 01点10分
@home友谊第一 十六进制和二进制很好换算的
2021年10月07日 11点10分
level 7
我就是一个大一新生啊兄弟们刚接触c
题目原话就是这样的我也不太懂[泪]就是下面(8)
2021年10月07日 01点10分 9
level 1
符号位,尾数,阶码
2021年10月07日 13点10分 10
level 15
哪个挂科叒鸡出的什么破烂问题,这玩意儿不日穿实现 C 根本看不出来怎么表示。
要 C++ 还可以套娃 IEC 60559 强行瞎蒙 std::numeric_limits<T>::is_iec559 ,C 连引用个 LIA-1(ISO/IEC 10967-1) 都遮遮掩掩的,根本就没正儿八斤的浮点数表示这概念、、
居然还直接浮点数“补码”、、、出这题的是 C 混不过去计组也要挂科的罢、、、
2021年10月07日 15点10分 11
我们老师出的 敢怒不敢言[黑线]
2021年10月10日 02点10分
叫你们老师重修。混个学位证不要浪费时间在这上面。
2021年10月10日 02点10分
1