1樓:公尺
shl(算數左移):shift logical left
shr(算數右移):shift logical right
sal(邏輯左移):shift arithmetic left
sar(邏輯右移):shift arithmetic right
rol(迴圈左移):rotate left
ror(迴圈右移):rotate right
rcl(帶進製的迴圈左移):rotate left through carry
rcr(帶進製的迴圈右移):rotate right through carry
2樓:二中娃子
magic 是邏輯,arithmetic是算術,所以上邊寫反了,
shl(邏輯左移):shift logical leftshr(邏輯右移):shift logical rightsal(算術左移):
shift arithmetic leftsar(算術右移):shift arithmetic right
3樓:雨月蕭
logical是邏輯的意思
組合語言中 「sal」(算術左移指令)和「shl」(邏輯左移指令)指令有什麼區別?
4樓:匿名使用者
組合語言中 sal(算術左移指令)和shl(邏輯左移指令)指令的定址方式、控制移位方式等都一內樣,區別其實只有一處:容
sal算術移位指令在執行時,實際上把運算元看成有符號數進行移位,最高位符號位移入cf,但本身保持原值;其餘位順序左移,次高位被捨棄。
shl邏輯移位指令在執行時,實際上把運算元看成無符號數進行移位,所有位順序左移,最高位移入cf。
舉例如下:
mov ax,8001h;(ax)=1000 0000 0000 0001b
sal ax,1 ;(ax)=1000 0000 0000 0010b
mov ax,8001h;(ax)=1000 0000 0000 0001b
shl ax,1 ;(ax)=0000 0000 0000 0010b
組合語言中 sal(算術左移指令)和shl(邏輯左移指令)指令的區別?
5樓:牧起雲高媼
算術用於帶符號數運算,邏輯用於不帶的。操作沒區別。都是最高位入cf最低位補0
6樓:白柏亢泰清
算術左移需要對符號位進行擴充套件,即最高位為符號位時,如果左移高位需要使用符號位的值填充,負數(補碼)就用1填充,正數就用0填充;
邏輯左移不考慮符號位,直接在高位補0即可。
而右移就不存在這種區別。
7樓:考運旺查卯
組合語言中
sal(算術左移指令)和shl(邏輯左移指令)指令的定址方式、控制移位方式等都一樣,區別其實只有一處:
sal算術移位指令在執行時,實際上把運算元看成有符號數進行移位,最高位符號位移入cf,但本身保持原值;其餘位順序左移,次高位被捨棄。
shl邏輯移位指令在執行時,實際上把運算元看成無符號數進行移位,所有位順序左移,最高位移入cf。
舉例如下:
movax,8001h;(ax)=10000000
0000
0001b
salax,1
;(ax)=1000
0000
0000
0010b
movax,8001h;(ax)=10000000
0000
0001b
shlax,1
;(ax)=0000
0000
0000
0010b
C語言中怎樣利用移位運算(左移和右移),實現a和b值的互換
不是移位運算,是位運算吧,使用異或運算。void main 這是一道題嗎?還是樓主自己想的?感覺只左移右移 有點難吖!怎麼說呢?如果是位運算,那得看你給的a和b的值,當然還要用到與或非之類的東西,網上應該有教程吧!如果就是交換,那就是樓上的!冒泡?使用 段 for 互換條件 不一定非要用for迴圈,...
在c位運算裡什麼是左移位和右移位
移位操作在程式設計中,位操作運算子的一種。1.在c 中,移位運算子有雙目 內移位運算子 左移容 和 右移 移位運算子組成的表示式也屬於算術表示式,其值為算術值。2.左移運算是將乙個二進位制位的運算元按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。3.右移運算是將乙個二進位制位的運算元按指...
C程式中左移右移的具體用法是什麼
c語言中,為左移運算子,為右移運算子。具體使用方法如下 1 左移運算子 將乙個運算物件的各二進位制位全部左移若干位 左邊的二進位制位丟棄,右邊補0 例 a a 2 將a的二進位制位左移2位,右補0,左移1位後a a 2 若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。2 右移運算子 將乙...