一个浮点数设置的位数

一个浮点数设置的位数

本文介绍了你将如何计算一个浮点数设置的位数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你怎么算使用​​C函数在一个浮点数设置的位数?


解决方案

 的#include<&stdio.h中GT; / *像printf()* /
#包括LT&;&limits.h中GT; / *为CHAR_BIT * /诠释主要(无效){
  / *工会法* /
  {
    / *工会只能在工会被初始化为第一个选项* /
    工会{浮动F;焦炭CS [的sizeof(浮动)]; } const的方便旗= {} 1.0;
    INT J,K;
    诠释计数= 0;
    为(J = 0; J<的sizeof(浮动); J ++)
    {
      字符常量字节= focs.cs [J]。
      对于(K = 0; K< CHAR_BIT; k ++)
      {
        如果((1 <        {
          算上++;
        }
      }
    }
    的printf(计数(%2.1f)=%d个\\ N,focs.f,计数);
  }
  / *投法* /
  {
    浮动常量F = 2.5;
    INT J,K;
    诠释计数= 0;
    为(J = 0; J&LT;的sizeof(浮动); J ++)
    {
      字符常量字节=((字符*)及F)[J]。
      对于(K = 0; K&LT; CHAR_BIT; k ++)
      {
        如果((1 <        {
          算上++;
        }
      }
    }
    的printf(计数(%2.1f)=%d个\\ N,F数);
  }
  返回0;
}

How do you count the number of bits set in a floating point number using C functions?

解决方案
#include <stdio.h>  /* for printf() */
#include <limits.h> /* for CHAR_BIT */

int main(void) {
  /* union method */
  {
    /* a union can only be initialized for the first option in the union */
    union { float f; char cs[sizeof(float)]; } const focs = { 1.0 };
    int j,k;
    int count = 0;
    for (j = 0; j < sizeof(float); j++)
    {
      char const byte = focs.cs[j];
      for (k = 0; k < CHAR_BIT; k++)
      {
        if ((1 << k) & byte)
        {
          count++;
        }
      }
    }
    printf("count(%2.1f) = %d\n", focs.f, count);
  }
  /* cast method */
  {
    float const f = 2.5;
    int j,k; 
    int count = 0;
    for (j = 0; j < sizeof(float); j++)
    {
      char const byte = ((char *)&f)[j];
      for (k = 0; k < CHAR_BIT; k++)
      {
        if ((1 << k) & byte)
        {
          count++;
        }
      }
    }
    printf("count(%2.1f) = %d\n", f, count);
  }
  return 0;
}

这篇关于你将如何计算一个浮点数设置的位数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 22:25