0

私はPythonの初心者です。情報の保存に問題があります。私は自分の「メンター」から仕事を得ているし、その方法を知らない。 数字の0と1の配列を持っています。最適化 - 「ビット」をメモリに保存する方法は?

a=[1,1,1,0] 

私はそれが整数だと知っていますが、私はビットとしてそれを保つべきだと言いました。 私は例えばに番号を付けるために私の変数を変換しようとしていた。

a = 14、その後ab = bin(14).

しかし、私はsys.getsizeof() ABを使用しているときは、より大きい。 bytearray()を使用しようとしていましたが、わかりません。 私はコンピュータの仕組みを知っていると思っていましたが、それは私を混乱させます。

ビットはどうしたらいいですか?私は何を使うべきですか?それを理解するために私は何を読むべきですか?私の変数の大きさをどのように測定するか(sys.getsizeof()は大丈夫ですか?バイナリファイルに書き込むべきですか?) メモリを最適化するためにやっています。

+1

数字をリテラルビットにする必要はありません。私はあなたの先生が意味したことは、数字がビットを表し、ビット単位の操作をそれらに使うべきだということです。また、数値をバイナリとして表示する必要がある場合は、配列の各整数を 'bin()'を使ってバイナリ表現に変換できます。 –

+0

面白いですが、数字の0から1の配列から始まり、ビットとして保存する必要があると言いました。その後、私は「1つの機械語」をメモリに読み込む必要があります。それは私にはあまりにも狂っているようだ... – Queen

+0

"機械語"の彼の定義は何ですか?コンピュータの種類によってワードサイズが異なります。 4ビットか8ビットのような特定の値を与えましたか?そして、数字をどのくらい正確にビットとして保存したいのですか?彼はビット表現に変換したいのですか?彼はそれらをバイナリファイルに書きたいのですか?私がお勧めしていることは、先生と会い、あなたの質問を彼/彼女と話し合うことです。彼らはあなたが探しているものを正確に伝えることができます。 –

答えて

2

は、私は目標を理解していないが、ここでの推測です:

def convert(bits): 
    val = 0 
    for bit in bits: 
     val = (val << 1) | bit 
    return val 

a = [1, 1, 1, 0] 
ab = convert(a) 
print(ab, bin(ab)) # -> 14 0b1110 

abに格納された結果を保持するために必要とされるビット数に応じて、様々な長さを持つ単一のPythonの整数であり、人数、個数、総数。上記のコードは任意の数のビットを扱います(しかし、あなたはそれに限界を置くことができます)。

関連する問題