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

Pythonで指定された範囲の数値の範囲のビットごとのANDを見つけるプログラム


startとendの2つの値があるとすると、[start、end](両方を含む)の範囲内のすべての数値のビットごとのANDを見つける必要があります。

したがって、入力がstart =8 end =12の場合、出力は8がバイナリで1000、12がバイナリで1100になるため、1000 AND 1001 AND 1010 AND 1011AND1100は1000で8になります。

>

これを解決するには、次の手順に従います-

  • n:=end-start + 1
  • x:=0
  • 31から0の範囲のbの場合、1ずつ減らします。
    • 2 ^ b
    • ループから抜け出す
  • 2 ^ b AND start AND endがゼロ以外の場合、
    • x:=x +(2 ^ b)
  • return x
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(start, end):
       n = end - start + 1
       x = 0
       for b in range(31, -1, -1):
          if (1 << b) < n:
             break
          if (1 << b) & start & end:
             x += 1 << b
       return x
    
    start = 8
    end = 12
    print(solve(start, end))

    入力

    8, 12

    出力

    8

    1. Pythonで指定された範囲の数値のリストを作成する

      Pythonは、さまざまなライブラリとメソッドを通じて、データ操作のあらゆる要件を処理できます。指定された数値のペアの間にあるすべての数値を生成する必要がある場合は、Pythonの組み込み関数と一部のライブラリを使用できます。この記事では、そのようなアプローチについて説明します。 範囲の使用 range()関数は、デフォルトで0から始まり、指定された数で終わる1ずつ増加する一連の数値を返します。必要に応じて、開始、終了、および増分ステップを呪いで変更できます。 例 def getnums(s, e,i):    return list(range(s, e,i)) #

    2. 与えられた数に対して3と5で割り切れるすべての数を出力するPythonプログラム

      これは、特定の整数Nから3と5で割り切れるすべての数値を出力するPythonプログラムです。数値が3と5の両方で完全に割り切れるかどうかを確認する必要があることを除いて、このプログラムを作成する方法は多数あります。 以下は、3と5で割り切れるすべての数値を出力するPythonプログラムを作成するための私のコードです- lower = int(input("Enter lower range limit:")) upper = int(input("Enter upper range limit:")) for i in range(lower, up