問題タブ [bit-shift]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Cへのアセンブリ言語
したがって、Cに変換する必要のある次のアセンブリ言語コードがあります。コードの数行で混乱しています。
for
これはループだと理解しています。各行にコメントを追加しました。
for
ループはこんな感じだと思います
テスト条件は何ですか?そして、どうすれば変更できますか?
アセンブリコードを見ると、変数'n'は何をしますか?
これはIntelx86であるため、形式はmovl = source、destです。
c - 符号付き整数の算術ビット シフト
算術ビット シフト演算子が C でどのように機能するか、およびそれが符号付き 32 ビット整数にどのように影響するかを理解しようとしています。
簡単にするために、1 バイト (8 ビット) 内で作業するとしましょう。
Stack Overflow といくつかの Web サイトに関する他の投稿を読んで、次のことがわかりました:
<<
MSB に向かって (私の場合は左に) シフトし、「空の」LSB ビットを 0 で埋めます。
そして>>
、LSBに向かって(私の場合は右に)シフトし、「空の」ビットをMSビットで埋めます
そのx = x << 7
ため、LSB を MSB に移動し、すべてを 0 に設定します。
>> 7
さて、最後の結果が だとしましょう。これにより、[0000.0010]
? 私は正しいですか?
シフト演算子に関する私の仮定は正しいですか?
私は自分のマシンでテストしました**
なんで?
c++ - 0xFF とは何ですか? なぜ 24 回シフトされるのですか?
その 0x000000FF は何を表していますか? 10 進数の 15 が 16 進数で F として表されることは知っていますが、なぜ << 24 なのですか?
java - Javaで2で割るためにビットシフトする必要がありますか?
重複の可能性:
ビットのシフトは、Java での乗算と除算よりも高速ですか? 。ネット?
Java最適化に関する簡単な質問
何年も前に大学で、ビットを右に 1 シフトすると 2 で除算するのと同じ結果が得られることを学びましたが、一般的にははるかに高速です。9 ~ 10 年前にそのことを知って以来、Java がその点でどのように発展してきたかはわかりません。Java コンパイラは自動的に 2 除算をビット シフト演算に変換しますか? それとも、コード内で手動でビット シフト演算を実行する必要がありますか?
vb.net - VB.NET ビット シフトの混乱
VB.NET のビット シフトに関していくつか質問があります。<< >>
演算子は VB.NET のビット シフト演算子であることを理解しています。
2 バイトの 16 進数値 があり0x3ACC
、これら 2 バイトの各ビットは日、月、または年のいずれかを表します。この 16 進値のビット構造はyyyy yyym mmmd dddd
.
年、月、日が独自のUINT16
値になるように、これらの値をビットシフトする方法について混乱しています。シフト番号はどうあるべきですか?シフトにパディングを追加する必要がありますか?
c++ - 非整数型数値の右シフト
私は次のコードを持っています
しかし、それは機能せず、次のエラーがあります。
関数 'int main()' 内: 行 7: エラー: タイプ 'float' および 'double' からバイナリ 'operator>>' への無効なオペランド -Wfatal-errors により、コンパイルが終了しました。
C/C++ コンパイラで右シフトは許可されていますか? ビジュアルスタジオ2010を使用しています。
c - 警告:左シフトカウント>=タイプの幅
私はビットの扱いに非常に慣れておらず、コンパイル時に次の警告に固執しています。
私の7行目は次のようになります
long
これは、私のシステムのサイズが32ビットの場合に意味があります。ただし、sizeof(long)
returnsは8
、longが8x8=64ビット長であることを示唆するものCHAR_BIT
として定義されています。8
ここで何が欠けていますか?不正確ですかsizeof
、CHAR_BIT
それとも私は何か根本的なことを誤解しましたか?
c++ - C ++でk次元超立方体の頂点を列挙する最も効率的な方法は何ですか?
基本的な質問: 私はak次元ボックスを持っています。上界と下界のベクトルがあります。頂点の座標を列挙する最も効率的な方法は何ですか?
背景: 例として、3次元のボックスがあるとします。取得するのに最も効率的なアルゴリズム/コードは何ですか:
ここで、L_0は下限ベクトルの0番目の要素に対応し、同様にU_2は上限ベクトルの2番目の要素です。
私のコード:
ここで、変数bound
は次のように宣言されています。
ただし、メモリを割り当てるループで時間を無駄にしないように、事前にサイズを設定しました。アルゴリズムを実行するたびに上記のプロシージャを約50,000,000回呼び出す必要があるため、これを非常に効率的に行う必要があります。
考えられるサブ質問:常に1ずつシフトして中間結果を保存するよりも、kだけシフトする方が速い傾向がありますか?(>> = ??を使用する必要があります)
c++ - C++ では、どちらが速いですか? (2 * i + 1) または (i << 1 | 1)?
答えはおそらくハードウェア固有のものだと思いますが、私が見逃しているより一般的な直感があったかどうか知りたいですか?
私はこの質問をして答えを与えられたので、「(2*i + 1)」の代わりに「(i << 1|1)」を使用するように一般的なアプローチを変更する必要があるかどうか疑問に思っています??
c - タイブレーカーを使用してトップ10リストを単一の数値として表す方法
スコア(最高スコアが勝つ)とタイムスタンプを含むトップ10リストがあります。
タイムスタンプは、同点スコアの場合に使用されます。この場合、タイムスタンプが最も低い同点スコアが優先されます(スコアを達成した最初の人が上位になります)。
ソートされたデータセットの例:
スコア14の同点に注意してください。タイムスタンプが小さい方が、上位に配置されます。
スコアとタイムスタンプの両方を単一の32ビット値として適切な順序で表す必要があります。
最大スコアが100万であると仮定します。
最初の有効な日付スコアを差し引くことにより、タイムスタンプ値を減らしました。
これはCでどのように達成できますか?