相关疑难解决方法(0)

如何打印IEEE754号码(没有printf)?

出于这个问题的目的,我没有能力使用printf设施(不幸的是,我无法告诉你原因,但我们现在只是假设我知道我在做什么).

对于IEEE754单精度数,您有以下位:

SEEE EEEE EFFF FFFF FFFF FFFF FFFF FFFF
Run Code Online (Sandbox Code Playgroud)

S符号在哪里,E是指数,F是分数.

对于所有情况,打印符号都相对容易,因为捕获所有特殊情况,如NaN(E == 0xff, F != 0),Inf(E == 0xff, F == 0)和0(E == 0, F == 0,因为在这种情况下不使用指数偏差,所以认为是特殊情况).

我有两个问题.

第一个是如何最好地将非规范化数字(where E == 0, F != 0)转换为规范化数字(where 1 <= E <= 0xfe)?我怀疑这对于简化下一个问题的答案是必要的(但我可能是错的,所以随时教育我).

第二个问题是如何打印标准化数字.我希望能够以两种方式打印它们,指数式-3.74195E3和非指数型3741.95.虽然,只要看看这两个并排,通过移动小数点就可以很容易地将前者转变为后者.所以我们只关注指数形式.

我对我很久以前用于打印PI的算法进行了模糊的回忆,其中你使用了一个不断减少的公式,并对可能性保持上限和下限,在两个限制达成一致时输出一个数字,并通过因子10(因此,当上限和下限为3.2364和时3.1234,您可以输出3并在计算中进行调整).

但是自从我这么做以后已经很长时间了,所以我甚至都不知道这是否适合采取这种做法.这么看来,因为每个比特的值是一半前一比特的通过小数部分移动时(1/2, …

c printf ieee-754

5
推荐指数
1
解决办法
1778
查看次数

在没有Printf或任何函数的情况下在C中打印int

我有一个分配,我需要在不使用printf,putchar等的情况下在C中打印整数.不允许包含头文件.除了我写的任何东西,没有函数调用.我有一个函数my_char我正在使用(也许是错误的)但它打印出一个字符.我目前有以下代码向后打印数字.不寻找答案.只是寻找一些方向,一些帮助,也许我正在看它完全错误.

void my_int(int num)
{   
  unsigned int i;    
  unsigned int j;

  char c;

  if (num < 0)    
    {
      my_char('-');
      num = -num;
    }

  do    
    {
      j = num % 10;
      c = j + '0';
      my_char(c);
      num = num/10;
    }while(num >0);
}
Run Code Online (Sandbox Code Playgroud)

c int printf

4
推荐指数
2
解决办法
5852
查看次数

标签 统计

c ×2

printf ×2

ieee-754 ×1

int ×1