Cの浮動小数点数のセットビットを数える方法は?
この問題では、1つの浮動小数点値が与えられます。バイナリ表現で設定されたビット数を見つける必要があります。
たとえば、浮動小数点数が0.15625の場合、6つのセットビットがあります。典型的な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
-
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
-
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 #