讓我們有一個任務,在變量a
上執行左位按位旋轉,而不用C++進位。我認爲,使用assembly inline來執行這個例程會好得多,不是嗎?向左按位旋轉變量沒有進位?
例如,如果我們有a == 100 == 0b<a bunch of zeros>1100100
,a LR 1
應該提供0b1001001 == 73
(即不是0b11001000 == 200
)。
那麼,的問題是:下面的代碼應該如何重寫以適應上面的任務?
#include <stdio.h>
int main()
{
long long a = 0;
scanf("%ld", &a);
// Here the left-shifting should be replaced with left-rotating
printf("%ld\n", a << 1);
return 0;
}
這幾乎肯定不會更好。 'a << 1'將映射到您可以編寫的完全相同的程序集(或者至少等效的程序集 - 例如寄存器可能不同)。 – 2011-04-07 20:39:35
您想繼續在哪裏使用?你的樣品只有很長的一段時間。如果這是你的意思 – sehe 2011-04-07 20:39:55
我認爲現有的轉變是不攜帶的,一個<< 1將自動轉移到城市生活垃圾? – Puppy 2011-04-07 20:41:42