C语言,将浮点数输出为十六进制为什么输出是0,如何改

作者&投稿:衡弦 (若有异议请与网页底部的电邮联系)
c语言中如何将10进制的浮点数转化为16进制数~

一、double的64位表达为:负号63,幂的负号62,2的幂61-52,精度表达51-0;double转为64位步骤:
1、正为0,负为1,放在63位;
2、将数据表达成1.XXX*(2^I)形式,I为整数;
3、若I有负号,62位为1,否则为0;
4、I的绝对值有61-52位表达;
5、1.XXX去掉1成0.XXX;将Y=0.XXX表达为二进制;具体算法可以参考:for(int i=51;i>=0;i--){Y*=2;if(Y>=1){Y-=1;Result[i]=1;}else Result[i]=0;}Result[i]就是51-0位的数值;
6、将64位二进制表达成16进制;

由于对于0x40a80000这类16进制写法,编译器都会默认其为整数,所以不能这样去做。故而无法实现你的设想。如果你非要以十六进制形式赋值浮点数,那么只能通过其他途径了。
比如说这样写:
char cc[4] = {0x00,0x00,0xa8,0x40}; // 因为window为小端模式所以低字节存放在低地址,高字节存放在高地址 float f=0.0f; memcpy(&f,cc,4); printf("%f",f);

浮点数以%x格式输出会出现异常,需要强制进行类型转换,
将printf("your is %x",a);改为:
printf("your is %x",(int)a);

%e
输出的是浮点数的科学计数法表示。如9999.1
用%f
形式输出的话,就是9999.1,用%e形式输出的话,就是9.9991*e3

大概就是这样了,不记得有%a这种输出形式了。


c语言中printf的格式怎么写?
include <stdio.h> int main(void){ char name[20];printf("请输入你的姓名:");scanf("%s",name);printf("你的姓名是:%s\\n",name);return 0;}

C语言,一个浮点数(两位小数),输出这个数的各个数字怎么编,输出的单个...
include <stdio.h> include <stdlib.h> include <string.h>int main(void){ double d;scanf("%lf", &d);int dec, sign, i;char *str = fcvt(d, 2, &dec, &sign);if (sign)putchar('-');for (i = 0; i != strlen(str); ++i){ if (i == dec)putchar('.');putchar...

printf中% f的作用是什么?
例如,以下代码使用printf函数输出一个浮点数:在这个例子中,%f 是printf函数的格式控制符,它告诉函数接下来的输出应该是一个浮点数。num是存储浮点数的变量,其值为3.14159。最后,printf函数将浮点数输出到屏幕上,加上一个换行符。需要注意的是,%f 格式控制符默认按照C语言的标准浮点数格式输出浮点...

C语言程序设计:输入浮点数12.5分别输出它的整数数部分和小数部分...
这个进行转换就能完成 代码如下:include <stdio.h>int main(){float a,c;int b;printf("请输入一个小数:"); scanf("%f",&a);b = (int)(int)(a+1.0e-6);;c=a-b; printf("\\n\\n输入的是:%f 整数是:%d 小数是:%f\\n\\n",a,b,c); } ...

C语言输入一个浮点数输出这个数的各个数字怎么编
假定你用定点格式 %f 形式写数,我们可以 把它当 字符串 读入,便于处理:include <stdio.h> void main( ){ char s[80];int i;printf("input a float number -123.456789:\\n");gets(s);for(i=0;i<strlen(s);i++){ if (s[i] >= '0' && s[i] <= '9') printf("%c "...

C语言中float怎么转换为数字?
在C语言中,将一个浮点数变换成整数的示例:main(){ float f=5.75;printf("f=%d,f=%f\\n",(int)f,f);} 执行程序,输出结果为f=5,f=5.750000。 f=5即为由浮点数转化出的整数。上述示例中f虽强制转为int型,但只在运算中起作用, 是临时的,而f本身的类型并不改变。因此,(int)f的...

c语言怎么让输出值是小数?
利用C语言使输出值为小数的编程方法和思想如下:1.首先需要定义一个变量作为后续需要输出的数。这里以定义一个变量a为例。需要注意的是,整型int是不支持转化的。2.然后使用scanf()函数接受从键盘输入的一个数,这样就为变量a成功赋值。3.接着使用printf语句来对数a进行小数化的处理。处理格式为:【%....

c语言:如何输出或输入小数点数字
首先你的定义一个浮点数变量,定义方法: float xxx;然后输出的时候使用%f格式 printf(“%f”,xxx);

c语言中%3.1f的意思是什么啊?
3.1f的意思是将对应的变量按浮点数输出,在输出设备上占宽3个字符位右对齐,小数点后四舍五入保留1位小数。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率...

C语言 printf %x输出浮点数
可以这样 printf("%x", *((int*)(&a)));或者 union t{ int a; float f;};union t m;m.f=1.0;printf("%x", m.a);

鹤庆县19786637035: C语言,将浮点数输出为十六进制为什么输出是0,如何改 -
紫满同新: 浮点数以%x格式输出会出现异常,需要强制进行类型转换, 将printf("your is %x",a);改为: printf("your is %x",(int)a);

鹤庆县19786637035: c语言中如何将10进制的浮点数转化为16进制数 -
紫满同新: 一、double的64位表达为:负号63,幂的负号62,2的幂61-52,精度表达51-0;double转为64位步骤: 1、正为0,负为1,放在63位; 2、将数据表达成1.XXX*(2^I)形式,I为整数; 3、若I有负号,62位为1,否则为0; 4、I的绝对值有61-52位表达; 5、1.XXX去掉1成0.XXX;将Y=0.XXX表达为二进制;具体算法可以参考:for(int i=51;i>=0;i--){Y*=2;if(Y>=1){Y-=1;Result[i]=1;}else Result[i]=0;}Result[i]就是51-0位的数值; 6、将64位二进制表达成16进制;

鹤庆县19786637035: c语言中如何将10进制的浮点数转化为16进制存放到char型数组中? -
紫满同新: 本人在串口通信中就用到这个,讲浮点数(不谈进制)转化为字符型(楼主所谓的16进制)放入char字符数组.更精确的说应该是将浮点数,以字节形式放入字节数组(不是char数组哦,因为char是有符号的),用以后续的通信传输(大多数的...

鹤庆县19786637035: c语言程序设计 输入一个数 要求将其转换为十六进制输出 -
紫满同新: #include <stdio.h> char f(int n) { return "0123456789ABCDEF"[n]; } int main() { int n,i=0; char hex[20]=""; scanf("%d",&n); while(n) { hex[i++]=f(n%16); n/=16; } for(i--;i>=0;i--) printf("%c",hex[i]); return 0; }

鹤庆县19786637035: C语言十六进制浮点数科学计数法 -
紫满同新: 你的数应该这样写的 0xa.1f 10p a是10 .1f表示1/16加上15/256 p10表示2的10次方(即1024) 即 0xa.1f 10p =10+ 1*(16的-1次方)+ 15*(16的-2次方) *(2的10次方) 类似于十进制数1.23=1+2*10的-1次方+3*10的-2次方

鹤庆县19786637035: c语言如何以输出16进制字符到文件 -
紫满同新: 1、首先,定义一个字符串变量char和asc,保存转换的字符和转换后的16进制数.2、定义一个整型变量n,保存字符的ASCII码.3、给字符char赋值,其值为字符i.4、将字符char转换为ASCII码,并保存在n中.5、字符的ASCII码,进一步转换为16进制数,并保存在变量asc中.6、最后,输出字符转换为16进制数后的数值.7、运行程序,代码中的字符i,已成功转换为16进制数.

鹤庆县19786637035: ★C语言输出地址的16进制是怎样算的?
紫满同新: 变量的地址是不确定的,但是如果给出了第一个变量的地址,后面的地址是可以算出来的.如下:int i, j; int *p = i; printf("%p\n", p); //output: 0x0000ffc0 由此可知i的地址是0x0000ffc0,那么j的地址就是0x0000ffc0+sizeof(int)=0x0000ffc4 就这么一...

鹤庆县19786637035: 用c语言编写函数,将输入的十进制数转换成十六进制数并输出 -
紫满同新: //#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h" int main(void){ unsigned n,i,k; printf("Please enter a positive integer...\nn="); scanf("%d",&n); printf("%d(10) = 0x",n); if(n){ for(i=0;(n&0xf0000000)==0;n<<=4,i++); for(;i...

鹤庆县19786637035: C语言中输出16进制数为什么只是用无符号形式呢? -
紫满同新: 不是只用无符号形式的.c中以8和16进制输出的整数,都是将内存中的各位的值全部按8/16进制输出,包括符号位.可以试验一下,1和-1的16进制输出结果是不一样.

鹤庆县19786637035: c语言输出十六进制 -
紫满同新: 输出的变量地址是内存地址,十六进制的地址也是符合十六进制的.值跟地址是一致的.因为题中“kptr=&k;”,所以K的地址就是kptr的值.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网