C51中左右移運算

2021-10-11 23:13:24 字數 937 閱讀 8161

彙編:

1.對於51微控制器:rlc a;即將累加器acc中內容左移1位,最低位被cy原始值替代,最高位移入進製標誌cy

中,同理還有rrc a。

具體使用:mov a,#0ffh;

clr c;

rlc a;

2.對於8086:

(1)左移:shl/sal dst cnt 移位時運算元的最低位將移入0,最高位移入cf中,若左移若干位,則cf中只保留最後一次移出的內容。

(2) 右移:分為邏輯右移與算術右移。邏輯右移即shr,用法與shl同;算術右移即sar,移位時運算元的最高位移入的是它原來的值,即最高位保持不變,最低位同樣移入cf,主要用於帶符號數的右移。

(3)迴圈移位:ror/rol/rcr/rcl dst cnt 類似51的移位指令,不過可以一次操作多位移動。

c51:

1.在c51中操作符為"<<",每執行一次左移指令,運算元最高位移入cy,cy中本來的數丟失,最低位補0,其他位依次向左移動1位。右移指令類同。

2.迴圈左移:使用c51庫函式自帶的 unsigned char crol(unsigned char c,unsigned b);實現將字元c迴圈左移b位,跟8086彙編的迴圈移位類同,同樣右移函式為_cror_;

標準c:

1.">>",c語言中的右移運算,一般情況下是高位補零,但在處理有符號數的時候會因計算機系統的不同而不同。有符號數高位是零,則右移時高位補零;如果是負數即高位是1,那麼有的系統會移入1(移動幾位就補幾個1),稱算術右移(大部分系統),有的會移入0,稱邏輯右移。

2."<<",c語言中的左移運算,無論是有符號數還是無符號數都是按照邏輯左移來操作,即向左移動若干位,低位補0即可。

c++:

">>「和」<<"運算子如果沒有被過載的情況下使用與標準c相同,如果被過載如輸入輸出流的操作,則變成輸入輸出操作符,如cout<>yyy; 當然也可以被過載為其他的操作。

大數左右移運算

mp bit 30 mp nail 32 mp bit mp mask 3fffffffh base 30bit 28 30 mp limb t mpn rshift mp ptr rp,mp srcptr up,mp size t n,unsigned int cnt assert n 1 ass...

java左 右移運算子

左移運算子,num 1 相當於num乘以2 右移運算子,num 1 相當於num除以2 比如num是40 10進製 對應的二進位制為 101000 2的5次方1 2的4次方4 2的3次方1 2的2次方0 2的1次方0 2的0次方0 二進位制轉換為十進位制方法原始方法 左移一位 左移一位是相對於二進位...

C51中預定義巨集

cx51編譯器提供了下列預定義的常量,它使你可以用預處理器指令和c 來建立可移植程式。常量 說明 型別 c51 c51編譯器的版本號 例如,810代表版本8.10 數值 cx51 cx51編譯器的版本號 例如,810代表版本8.10 目前該預定義巨集已經被取消。數值 date 當編譯開始時的ansi...