[解決済み] sarqとshrqの違いについて【重複
2022-02-11 05:21:33
質問
名称 値
rdi: 0x6
ラックス: 0x4
sarqとshrqの違いは何ですか?
sarq $1, %rdi とした場合、この値はどのように見えるでしょうか? shrq %rdi は何をするのですか?
どのように解決するのですか?
sarq
はクアッドワードの算術右シフト、そして
shrq
はクアッドワードの論理右シフトです。算術シフトは空いたビットを左端のビット(別名、符号ビット)で埋めるのに対し、論理右シフトは0だけで埋めるという違いがあります。
正の数の場合、両者の動作は同じです。負の数では、その動作は全く異なります。
例えば、以下のように仮定します。
%rax = 16 (0x0000 0000 0000 0010)
. どちらも
sar $4, %rax
と
shrq $4, %rax
を設定します。
%rax
を 1 にする (
0x0000 0000 0000 0001
).
では、もし
%rax = -16 (0xffff ffff ffff fff0)
.
sar $4, %rax
を設定します。
%rax
を-1する(
0xffff ffff ffff ffff
) の間
shr $4, %rax
を設定します。
%rax
を1152921504606846975に変換します(
0x0fff ffff ffff ffff
).
どの命令を使うかは、データ型とやりたいことによります。例えば、C
>>
演算子は
sar
は符号付きデータ型に
shr
は符号なしを表す。
関連
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] スタティック・ライブラリとシェアード・ライブラリの違い?
-
[解決済み] C言語のi++と++iに性能差はあるのでしょうか?
-
[解決済み] floatとdoubleの違いは何ですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
-
[解決済み】シンプルなC言語のscanfが機能しない?重複
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言