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

C2進数の末尾と先頭のゼロをカウントするプログラム


まず、2進数の末尾のゼロが何であるかを理解しましょう。

後続ゼロ

最下位ビット(LSB)の最初のビットの後のゼロの位置は、2進数の後続ゼロと呼ばれます。

104は10進数です

104の2進数は次のとおりです:(MSB)1101000(LSB)

ここで

  • MSBは最上位ビットを指します。
  • LSBは最下位ビットを指します。
  • 最初のビットが設定された後のLSBから、3つのゼロがあります。
  • 末尾のゼロの数は3つです。

以下は、指定された数の後続ゼロの数をカウントするプログラムです-

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, trail = 0, size;
   printf("Enter a number\n");
   scanf("%d",&number);
   size = sizeof(number) * 8;
   for(i = 0; i < size; i++){
      if((number >> i) & 1) {
         break;
      }
      trail++;
   }
   printf("Number of trailing ZERO is = %d", trail);
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます-

Enter a number
24
Number of trailing ZERO is = 3

先行ゼロ

ビットが1に設定される前のゼロの位置の場合 、それらは先行ゼロと呼ばれます。

94は10進数です。

94の2進数は次のとおりです:(MSB)..... 001011110(LSB)

先行ゼロの数は=25

プログラム

以下に示すのは、特定の数の先行ゼロの数をカウントするプログラムです。

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, lead = 0, Msb,size;
   printf("Enter a number\n");
   scanf("%d",&number);
   size = sizeof(number) * 8;
   Msb=1<<(size-1);
   for(i = 0; i < size; i++){
      if((number << i) & Msb) {
         break;
      }
      lead++;
   }
   printf("Number of Leading ZERO is = %d", lead);
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます-

Enter a number
94
Number of Leading ZERO is = 25

  1. Pythonで1からkまでのすべての値で割り切れる最小数xの後続ゼロの数をカウントするプログラム

    数k​​があるとします。ここで、1からkまでのすべての値が均等に分割される最小の正の整数値xを考えます。言い換えると、xが1からkまでのすべての数値で割り切れる最小値xを考えます。 xの後続ゼロの数を見つける必要があります。 したがって、入力がk =6のような場合、出力は0になります。ここでの最小のxは60であり、60は1、2、3、4、5、および6を使用して除算できます。末尾のゼロは1つだけです。 60。 これを解決するには、次の手順に従います- res:=0 x:=1 x * 5 <=k、do res:=res + 1 x:=x * 5

  2. 連続する1’のないバイナリ文字列の数をカウントするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −正の整数Nが与えられているので、文字列に連続する1が存在しないように、長さNで使用可能なすべての可能な個別のバイナリ文字列をカウントする必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # count the number of strings def countStrings(n):    a=[0 for i in range(n)]    b=[0 for i in range(n)]    a[0] = b[0]