【Python入門】数値の右端にあるセットビットをクリアする方法
はじめに
ビット演算は、プログラミングにおいて効率的な処理を実現するための重要なテクニックの一つです。本記事では、Pythonを使って「数値の右端にセットされているビット(1になっているビット)をクリア(0に戻す)する方法」を解説します。
この操作には、ビットごとの論理積を求める「&」演算子を使用します。ポイントは、元の数値から1を引いた値との間でAND演算を行うことです。
実装例
以下のコードは、指定した整数の右端のセットビットをクリアする関数の実装例です。
def clear_right_bit(my_val):
return my_val & (my_val - 1)
n_val = 6
print("n の値は :")
print(n_val)
print("右端のセットビットをクリアした後の数値は ")
print(clear_right_bit(n_val))実行結果
n の値は : 6 右端のセットビットをクリアした後の数値は 4
コードの解説
まず、整数を引数として受け取る関数
clear_right_bitを定義します。関数内では、「元の数値」と「その数値から1を引いた値」の間でAND(&)演算を行い、その結果を返します。
関数の外で整数
n_val = 6を定義し、その値を引数として関数を呼び出します。計算結果がコンソールに出力されます。
なぜ「n & (n-1)」で右端のセットビットが消えるのか?
このテクニックが機能する仕組みを、具体例で確認してみましょう。6を2進数で表すと「110」です。
6(2進数:110)から1を引くと、5(2進数:101)になります。
110 と 101 のAND演算を行うと、100(10進数で4)となります。
つまり、n - 1 を計算すると、右端のセットビットが0になり、それより下位のビットがすべて1に反転します。この状態でAND演算を行うと、右端のセットビットだけが確実に0になるというわけです。
この手法は、ビットカウント(セットビットの個数を数える処理)などでも頻繁に活用される、知っておくと便利な定番テクニックです。
-
Pythonでリスト内の最小値を見つける方法を解説
この記事では、リストの中から最小の数値を見つける方法について、具体的なサンプルコードとともに詳しく解説します。問題の概要問題: 数値のリストが与えられたとき、その中に含まれる最も小さい数値を画面に表示すること。この問題を解くアプローチは主に2つあります。ひとつは sort() メソッドを使ってリストを昇順に並べ替え、先頭の要素(インデックス0)を取得する方法。もうひとつは、Pythonに標準で用意されている組み込み関数 min() を使う方法です。それぞれ順番に見ていきましょう。方法1:sort()メソッドで並べ替えて最小値を取得するまずはリストを昇順にソートし、先頭の要素を取り出す方法です。
-
Pythonのsetを使って文字列内の母音の数をカウントする方法
この記事では、ユーザーが入力した文字列に含まれる母音の数をカウントするPythonプログラムを紹介します。母音の判定にはset(セット)を使用します。setとは、順序を持たないコレクション型のデータ構造です。反復処理が可能で、要素の追加や削除による変更もできますが、重複した要素は保持されません。さらに、setは内部的にハッシュテーブルで実装されているため、特定の要素が含まれているかどうかの判定(in演算子)を高速に行えるという大きな特徴があります。実行例 入力 : str1 = pythonprogram 出力 : 3 アルゴリズム ステップ1: 母音を数えるためのカウンター変数を用意します。