2016-08-15 28 views
0

私は、16ビットの線形フィードバックシフトレジスタLFSRをPythonのネイティブシフト演算子を使って書いてみたいとしましょう。PythonでLFSRのシフト演算子を使う

  1. 演算子自体にビットを指定して新しいMSB位置に移動させる機能がありますか?
  2. オペレータは、レジスタから落ちるLSBをキャッチするキャリーフラグなどを持っていますか?
  3. レジスタを16ビットサイズに設定する必要がありますか?変数が明確に型付けされていないPythonでこれを行う方法がわかりません。
  4. フィードバックのマルチビットXOR関数を計算する最も賢い方法は何ですか?実際のビット抽出またはルックアップテーブル?

おかげで、 ゲルト

+0

本当にこれをpythonで行いますか? – Akilesh

答えて

1

Pythonはレジスタを持っていない、あなたは何の型を宣言することはできません。

シフト演算子は、無制限の整数で動作します。左にシフトすると、数値は無期限に(またはメモリがなくなるまで)引き続き大きくなります。右にシフトすると、最下位ビットは期待どおりに落とされます。 "キャリーフラグ"はありません。これはアセンブリ言語で見ているものですが、Pythonはアセンブリではありません。整数は無制限の精度を持つため、論理と算術のシフトは同じ意味です(符号ビットが無期限に繰り返されると想像してください)。

固定幅操作を実行する場合は、無限精度操作の結果をマスクするだけで済みます。

「スマート」なやり方は、スタックオーバーフローのための適切な質問ではありません。