C语言帮忙看看这段代码是把十进制转换IEEE754的 但是代码貌似错了 求解决
“网上资料都是将ieee754转换成数字”这个我倒是真搜不到... 严格地说只有一个英文数学向的论文|||(更正 我连那个论文也找不到了)
最简单的方法(除了直接用C库的函数)
float s = 0;
for (;;)
{
s = s * 10 + *p - '0';
}
x.,xb
如果你想硬转的话,我只问你一个问题,把十进制有效数字对齐到二进制有效数字你有概念么,事实上浮点数和字符串装换主要的工作就只是这么一个问题。写程序不是抄抄代码就成的,基本原理你都没概念给你讲有什么用。
----
嘛... 其实已经告诉你了,把十进制有效数字对其到二进制上... 二不能被五整除所以对齐结果可能是无限小数;然后把10底的指数换算成2底的在把对齐时候的偏差也加进去就有了有效数字和指数(因为前面有效数字对齐了所以这个指数肯定是整数)。具体过程既然别人写出来是论文我写出来也不会好看到哪儿去。 论难度的话也就是高考数学大题稍强的水平吧,因为只是高三知识折腾来折腾去x.,x
----
你要理解这么个情况,知道这个算法并且还有闲心逛知道的就算除了我以外还有别人一只手也能数过来。这种没几个人知道的东西你觉得在没有基础铺垫的情况下我可能三言两语跟你说清楚么。所以我一直在给你传达的信息就是别研究这种没什么意义的东西了,实际操作中只要不是想彻底自己实现浮点数和字符串的相互转化,不可能用到这个(这也就是这个并不是特别难的算法为什么没几个人知道的另一方面原因,不过它依然很麻烦)。况且这个根本不是计算机问题而是彻头彻尾的数学问题。
将浮点数转化成整数用INT指令,将整数转成浮点数用FLT指令,指令不难理解,值得注意的是,一个16位的整数转化成浮点数后要占32位的空间。 一般PLC用作浮点数运算都是比较精密的数值(如脉冲数),且比较大,所以浮点数运算一般要用长字节运算(指...
/* $begin show-bytes */
#include <stdio.h>
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start, int len)
{
int i;
//原来的代码 for (i = 0; i < len; i++)
for (i = len-1; i >=0; i--)
{
printf(" %.2x", start[i]);
}
printf("
");
}
void show_int(int x)
{
float oneFloat;
oneFloat=(float)x;
show_bytes((byte_pointer) &oneFloat, sizeof(float));
//原来的代码show_bytes((byte_pointer) &x, sizeof(int));
}
void show_float(float x)
{
show_bytes((byte_pointer) &x, sizeof(float));
}
void show_pointer(void *x)
{
show_bytes((byte_pointer) &x, sizeof(void *));
}
/* $end show-bytes */
/* $begin test-show-bytes */
void test_show_bytes(int val)
{
int ival = val;
float fval = (float) ival;
int *pval = &ival;
show_int(ival);
show_float(fval);
show_pointer(pval);
}
/* $end test-show-bytes */
void simple_show()
{
/* $begin simple-show */
int val = 0x12345678;
byte_pointer valp = (byte_pointer) &val;
show_bytes(valp, 1); /* A. */
show_bytes(valp, 2); /* B. */
show_bytes(valp, 3); /* C. */
/* $end simple-show */
}
void float_eg()
{
/* $begin float-show */
int x = 3490593;
float f = (float) x;
show_int(x);
show_float(f);
/* $end float-show */
}
void string_eg()
{
/* $begin show-string */
char *s = "ABCDEF";
show_bytes(s, strlen(s));
/* $end show-string */
}
void show_twocomp()
{
/* $begin show-twocomp */
short int x = 12345;
short int mx = -x;
show_bytes((byte_pointer) &x, sizeof(short int));
show_bytes((byte_pointer) &mx, sizeof(short int));
/* $end show-twocomp */
}
int main(int argc, char *argv[])
{
//十进制数520的十六进制数是00000208H,
//正确的32位浮点是44020000H,内存从低位开始放置00 00 02 44
//十进制数100的十六进制数是00000064H,
//正确的32位浮点是42C80000H,内存从低位开始放置00 00 C8 42
int num;
printf("Input one integer:");
scanf("%d",&num);
printf("
");
show_int(num); //十进制整数转换为32位浮点
printf("
");
return 0;
}
C#中如何用一维数组完成一个十进制转换成二进制的数和八进制的数.
我刚做了个转换的。我是做十进制转二进制的,就发代码给你看看。转八进制你自己慢慢写哈。int a = 64, b = 64;int c = 0;while (b != 0){ b \/= 2;c += 1;} int[] Ejz = new int[c];for (int i = c - 1; i > 0; i--){ Ejz[i] = (int)a % 2;a \/= 2...
C++中怎样完成将一个十进制转换成八进制、十六进制数的功能
1、C语言打印八进制是通过%o,(百分号和小写字母o组成)打印输出的,首先八进制017的打印输出,实现以下代码段,代码段是先保存一个8进制的数字,然后通过%o的方式输出八进制。2、代码段编译通过后运行查看结果,可以看到结果就是17,八进制打印出八进制,不会有什么变化。3、十进制表示的数字以八进制的...
大家看看这个十进制转换成8421bcd,搞不清单位
所谓BCD码,就是用4位二进制数表示十进制的一位 十进制85,十位的8表示成4位二进制数为1000;个位的5表示成二进制为0101 因此表示85D的bcd码为10000101B
帮忙看看c语言十六进制转为十进制的代码哪里出错了?明明定义了c()函数...
include <stdio.h> include <string.h> \/\/strlen函数头文件\/\/ include <math.h> \/\/pow函数头文件\/\/ int c(char s[]);int main(){ char s[10];gets(s); \/\/获取一串字符串\/\/ printf("转化为相应的十进制数为%d", c(s));return 0;} int c(char s[]) \/\/定义函数\/\/ { int x...
求:C#十进制直接转二进制的方法。。。
输出0b1010 python 中二进制以ob开头。2、我们再看看十进制转化为八进制,使用方法oct(dec) dec=10 print oct(dec)。3、然后十进制转化16进制,同样使用python的内置方法进行hex(dec)。4、接着我们再看看二进制转10进制。5、同理八进制转化成二进制方法。6、最后我们看看16进制转化成10进制。
C语言中进制互相转换的公式是什么
通过while循环,程序从右到左遍历二进制数的每一位,计算出对应的十进制值,并在最后输出。接下来,我们再来看看如何将八进制数转换为十进制数。函数eight_ten()接收一个用户输入的八进制数(只由0~7之前的数组成),并通过直接读取输入的方式,将八进制数转换为十进制数。这里使用了C语言中特殊的...
...十六进制数转换十进制数的程序 和将 十进制数转换成十六进制的程序...
十六进制-->十进制:其实就是十六进制-->BCD,可参考http:\/\/wenku.baidu.com\/view\/313907020740be1e650e9a3d.html 我写的代码:module Bin2BCD16(A, B);input [15:0] A;output [19:0] B;wire [3:0] c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13;wire [3:0...
Matlab十进制二进制转换
使用Zhihu On VSCode创作并发布。大家好,我是MATLAB新手,今天给大家分享一个二进制和十进制相互转换的MATLAB代码。代码经过长时间努力完成,现在来展示一下,并对比一下自己写的代码和MATLAB内置函数的区别,以便更好地学习。首先,我们来谈谈如何实现二进制转十进制。由于二进制转十进制可以通过乘法实现,...
python里转换成十进制数是多少
导读:很多朋友问到关于python里转换成十进制数是多少的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!python其他进制转换成十进制代码代码为,print(int("x",y))。表示把y进制的x转换成十进制数并输出结果。Python是一个高层次的结合了解释性、...
sql Server如何编写函数实现把十进制数转换为二进制数?求大神相助...
SET @BinStr = CAST(@Mod2 AS CHAR(1)) + @BinStr -- 至此,已完成十进制到二进制的转换 IF @StrLen > LEN(@BinStr) -- 如果用户指定的长度大于实际长度,则需要左边补0 BEGIN IF @StrLen > 31 -- 返回的长度,最长为32 SET @StrLen = 31 DECLARE @ZeroStr VAR...