本文介绍了你将如何计算一个浮点数设置的位数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你怎么算使用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;
}
这篇关于你将如何计算一个浮点数设置的位数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!