C语言中,单精度浮点数十进制时是22.84,转化为16进制是多少,怎么转化的

C语言中,单精度浮点数十进制时是22.84,转化为16进制是多少,怎么转化的,想在界面上输出%x(转化后的),语句是怎样的。能同时以指数形式和非指数形式输出吗?能的话请全... C语言中,单精度浮点数十进制时是22.84,转化为16进制是多少,怎么转化的,想在界面上输出%x(转化后的),语句是怎样的。能同时以指数形式和非指数形式输出吗?能的话请全部列出。
一共五个问题,一个20分或40分,请分点作答。
展开
 我来答
White_MouseYBZ
推荐于2018-03-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6705万
展开全部

整数部分用16除,反向取余数;小数部分用16乘,正向取整数。具体如下:

      22÷16    =    1     余   6

        1÷16    =    0     余   1

    所以整数部分是16。小数部分

      0.84x16   =   13(D)   . 44

      0.44x16   =     7        .04

      0.04x16   =     0        .64

      0.64x16   =   10(A)   .24

      0.24x16   =     3        .84

      0.84x16   =   13(D)   . 44

    ...以后循环了,所以

22.84(10) = 16.D70A3D70A3...(16)

还可以先“用2除反向取余数”和“用2乘正向取整数”变成二进制,再从小数点开始左右每4位分开,前后不足4位的用0补齐,然后用对应的16进制符号直接写出来就可以了。22.84化成二进制是10110.11010111000010100011...→1'0110.1101'0111'0000'1010'0011→0001'0110.1101'0111'0000'1010'0011→16.D70A3...

要写代码,如下便可:

#include "stdio.h"
int main(void){
    double x=22.84,t;
    char h[17]="0123456789ABCDEF", i,k;
    printf("%g(10) = %x.",x,int(x));
    for(t=x-int(x),i=0;i<10;i++){
        k=int(t*=16),t-=k;
        printf("%c",h[k]);
    }
    printf("...(16)\n");
    return 0;
}

 C/C++没有提供以指针形式输出16进制数据的功能。

匿名用户
2016-05-18
展开全部
十进制表示成浮点规范化数方法:  对于数n,先化成n=((-1)^s)*(1.x)*(2^k),对于0、无穷等特殊数在浮点数里由特殊的格式表示。然后把s、x、k就填到相应位置就可以了。例如12=((-1)^0)*(1.5)*(2^3),那么s=0,x=5,k=3。至于s、x、k放到哪里就要看你的浮点数遵循那个规则。  十进制表示成浮点规范化数应用:  例如把27/64转为浮点规范化数  27/64=0.421875  用二进制数表示为0.011011=1.1011×e^(-2)  E=e+127=125用二进制数表示为01111101  M=1011  S=0  所以最后结果为:SEM即:00111110110110000000000000000000  ⑵和⑴除了符号其他都一样,即10111110110110000000000000000000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式