SHL SHR, SAL SAR, ROL ROR

//____逻辑移动是针对无符号数的______________________________________________

逻辑左移 SHL  逻辑右移 SHR: unsigned int i = 0x1234; unsigned int j = 0; j = i >> 8;    //右移, 执行后 j = 0x12; j = i << 8;    //左移, 执行后 j = 0x123400;
//_____算术移动是针对有符号数的_____________________________________________

算术左移 SAL  算术右移 SAR: int i = 0x88332211; int j = 0; j = i << 8;  //左移, 执行后 j = 0x33221100; 与逻辑左移相同. j = i >> 8;  //右移, 执行后 j = FF883322; 移进来的位, 全置1. 
//_____异同_______________________________________________________________ 相同之处: SHL = SAL;  当有符号数为正数时 SAR = SHR高位用0填补. 不同之处: 当有符号数为负数时, SAR 高位用1填补. 
//_____循环位移___________________________________________________________ 循环位移只有汇编指令, C语言中没有相应描述. 所以只能用汇编指令编写程序 int i = 0x77665544; __asm {     ROR  i,  8   //执行后, i = 0x44776655; }

注意: ROR, ROL会把符号位也移动起来, 即把有符号数当成无符号数处理. 这很可怕, 会改变有符号数的正负号, 呵呵.

时间: 2024-11-05 15:51:56

SHL SHR, SAL SAR, ROL ROR的相关文章

delphi 按位运算 not and or xor shl shr

delphi 按位运算 not and or xor shl shr unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; But

汇编语言基本概念汇总

汇编语言应该是我们现在学的最"低级"的语言了,因为现在不会再有人去学机器语言了.而汇编语言还在一些硬件或者嵌入式设备上使用并开发着.以下资料是为了大学的汇编考试整理的资料,现在与大家分享,希望能给大家提供帮助. 汇编语言程序设计汇总 计算机主要由运算器.控制器.存储器和输入输出设备五大部件构成. 字长word是指微处理器内部一次可以并行处理二进制代码的位数,它与微处理器内部寄存器以及CPU内部数据总线宽度是一致的,字长越长,所表示的数据精度就越高. 内存是由若干个存储单元组成,每个单元

汇编移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR

SHL.SHR.SAL.SAR: 移位指令 ;SHL(Shift Left):      逻辑左移 ;SHR(Shift Right):      逻辑右移 ;SAL(Shift Arithmetic Left): 算术左移 ;SAR(Shift Arithmetic Right): 算术右移 ;其中的 SHL 和 SAL 相同, 但 SHR 和 SAR 不同. ;SHL.SAL: 每位左移, 低位补 0, 高位进 CF ;SHR  : 每位右移, 低位进 CF, 高位补 0 ;SAR  : 每

GCC内嵌AT&amp;T汇编语法

一 基本语法 1 寄存器引用 引用寄存器要在寄存器号前加百分号%,如"movl %eax, %ebx". 80386有如下寄存器: 1.8个32-bit寄存器 %eax,%ebx,%ecx,%edx,%edi,%esi,%ebp,%esp: 2.8个16-bit寄存器,它们事实上是上面8个32-bit寄存器的低16位:%ax,%bx,%cx,%dx,%di,%si,%bp,%sp: 3.8个8-bit寄存器:%ah,%al,%bh,%bl,%ch,%cl,%dh,%dl.它们事实上是寄

汇编语言基本指令

汇编语言基本指令     一.机械码,又称机器码. ultraedit打开,编辑exe文件时你会看到 许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码 就是机器码. 修改程序时必须通过修改机器码来修改exe文件. 二.需要熟练掌握的全部汇编知识(只有这么多) 不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了 cmp a,b 比较a与b mov a,b 把b的值送给a ret 返回主程序 nop 无作用,英文“no operation”的简写

8088汇编指令大全

一.数据传输指令 ───────────────────────────────────────     它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据.     1. 通用数据传送指令.         MOV    传送字或字节.         MOVSX  先符号扩展,再传送.         MOVZX  先零扩展,再传送.         PUSH    把字压入堆栈.         POP    把字弹出堆栈.         PUSHA  把AX,CX,DX,BX,SP

信息安全系统设计基础第4周学习总结

第三章 程序的机器级表示 3.1 历史观点 Intel处理器系列:俗称x86,开始时是第一代单芯片.16位微处理器之一. I386 增加了平坦寻址模式 每个后继处理器的设计都是后向兼容的,可以保证较早版本上编译的代码在较新的处理器上运行. 超线程:一个处理器上同时运行两个程序 平坦寻址模式: 使程序员将整个存储空间看做一个大的字节数组. 3.7 过程 一个过程调用包括将数据和控制从代码的一部分转移到另一部分. 数据传递.局部变量的分配和释放通过操纵程序栈实现. 3.2 程序编码 存储器系统的实际

带注释的汇编指令大全

一.数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节.  如:MOV eax,11  意思:eax=11 MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX

8080汇编指令大全

8080汇编手册数据传输指令 ────────────────────────────── 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,E