介紹
循環移位運算是把數值變成二進制然後進行循環移動的運算。用到循環移位的操作時,在彙編裡面是比較容易實現的,ror,rol指令就行了。利用位運算進行循環移位操作比較容易理解。如果不是循環移位,使用x< >n右移n位。
循環移位也容易理解。比如我們有個1位元組的數: x = 10111110。現在需要對其循環右移4位。也就是最後結果為x = 11101011。其實思路就是分離數據,我們需要提取出前四位1011,後四位1110。其實我們需要兩個數的或操作,也就是00001011,11100000,我們只要得到這兩個數然後讓他們就行或操作:00001011|11100000 =11101011。把10111110 右移4位變為00001011(x>>4),把10111110左移4位變為11100000(x(N - n) ) | (x<
循環右移n位: (xn)。
代碼
將循環右移寫成一個函式rightrot,每次循環右移一位,直到移完n位為止。在main()函式中輸入a和n,然後調用以下函式。