Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cの浮動小数点数のセットビットを数える方法は?


この問題では、1つの浮動小数点値が与えられます。バイナリ表現で設定されたビット数を見つける必要があります。

たとえば、浮動小数点数が0.15625の場合、6つのセットビットがあります。典型的なCコンパイラは、単精度浮動小数点表現を使用していました。したがって、次のようになります。

Cの浮動小数点数のセットビットを数える方法は?

ビット値に変換するには、数値を1つのポインター変数に取り込んでから、ポインターをchar*型データに型キャストする必要があります。次に、各バイトを1つずつ処理します。次に、各文字のセットビットをカウントできます。

#include <stdio.h>
int char_set_bit_count(char number) {
   unsigned int count = 0;
   while (number != 0) {
      number &= (number-1);
      count++;
   }
   return count;
}
int count_float_set_bit(float x) {
   unsigned int n = sizeof(float)/sizeof(char); //count number of characters in the binary equivalent
   int i;
   char *ptr = (char *)&x; //cast the address of variable into char
   int count = 0; // To store the result
   for (i = 0; i < n; i++) {
      count += char_set_bit_count(*ptr); //count bits for each bytes ptr++;
   }
   return count;
}
main() {
   float x = 0.15625;
   printf ("Binary representation of %f has %u set bits ", x, count_float_set_bit(x));
}

出力

Binary representation of 0.156250 has 6 set bits

  1. Pythonリスト内包表記を使用してセットビットをカウントする

    セットビットは、数値の2進形式で1を表すビットです。この記事では、特定の10進数のセットビット数をカウントする方法を説明します。 #53 in binary is: 110101 The number of set bits is the number of ones. Here it is 4. 以下のプログラムでは、数値を取得してバイナリに変換します。バイナリ変換には最初の2文字として0bが含まれているため、文字列分割手法を使用して削除します。次に、forループを使用して、桁の値が1の場合、2進数の各ビットをカウントします。 例 value = 59 #Check the binary

  2. 1からnまでのすべての数の合計セットビットをカウントするPythonプログラム。

    正の整数nが与えられると、その2進表現に変更し、設定されたビットの総数をカウントします。 例 Input : n=3 Output : 4 アルゴリズム Step 1: Input a positive integer data. Step 2: then convert it to binary form. Step 3: initialize the variable s = 0. Step 4: traverse every element and add. Step 5: display sum. サンプルコード # Python program to count set bits #