写出浮点数-101.1101二进制表示方法?

如题所述

数学上,十进制转2进制,整数部分 用 除以2取余数得到,小数部分 用 乘2取整数的方法得到。
101 /2 = 50 -- 1
50 /2 = 25 -- 0
25 /2 = 12 -- 1
12 /2 = 6 -- 0
6 /2 = 3 -- 0
3 /2 = 1 -- 1
1 /2 = 0 -- 1
得 1100101
.1101 * 2 = .2202 -- 0
.2202 * 2 = .4404 -- 0
...
.9664 * 2 = .9328 -- 1
.9328 * 2 = .8656 -- 1
得 .00011011
合起来是2进制是 -1100101.00011011
机内数用IEEE 754 规定的格式存放。分 数符,阶符,阶码,尾数
可以用 union 方法输出各个字节的 2 进制形式。
#include <stdio.h>
#include <math.h>
union uu {
float f;
unsigned char s[4];
} u;
void char_to_2(unsigned char c, int v[8]){
int i,j;
for (i=0; i<8;i++)
v[i]=( c & (1 << (7-i))) >> (7-i);
}
int main () {
char s;
int i,j;
int v[4][8];
u.f = -101.1101;
s = u.s[0]; u.s[0]=u.s[3]; u.s[3]=s;
s = u.s[1]; u.s[1]=u.s[2]; u.s[2]=s;
for (i=0;i<4;i++) char_to_2(u.s[i],v[i]);
for (j=0;j<4;j++) {
for (i=0;i<8;i++) printf("%d",v[j][i]);
printf(" ");
}
return(0);
}

输出机内 float -101.1101 的二进制 是 11000010 11001010 00111000 01011111
温馨提示:答案为网友推荐,仅供参考
相似回答