// Code I'll be working with
int shift_left2_rightn(int x, int n)
{
x <<= 2;
x >>= n;
return x;
}
質問1.左シフト=SAL
およびSHL
。私の本はそれらが同じ効果を持っていると言っています。では、なぜ2つのシフト操作があるのでしょうか。
例えば:
movl 8(%ebp), %eax //Get x
_______ //x <<= 2
私の本はの答えを与えます
sall $2, %eax
だろう
shll $2, %eax
正解もありましたか?
質問2:
SHR
素人の言葉で言えば、との違いは何SAR
ですか?私の本によると、1つは論理シフト(ゼロで埋める)で、もう1つは算術シフト(符号ビットのコピーで埋める)です。
0 /符号ビットで何を埋めますか?
例えば:
次の組み立て手順でどちらを使用するかをどのように知ることができますか?
movl 12(%ebp), %ecx //Get n
______ //x >>=n
本の裏には答えがあります
sarl %cl, %eax
を使用するとどうなるか説明してくださいshrl
。
これを理解するためにあなたの助けをありがとう!