数据位移计算方法512B左移2位,是多少,为什么

1个回答

  • 第一步化为2进制

    512B=0101 0001 0010 1011

    第二步,左移2位,最左侧补上两个0,第1位变第3位,第2位变第4位,第3位变第5位,以此类推

    0101 0001 0010 101100

    第三步从新分组,从右边开始4位一组,最左边补数个0,凑齐一组,在每一组下面写对应16进制数

    0001 0100 0100 1010 1100

    1 8 4 A C

    所以512B左移2位为184AC

    我学汇编语言时,位移运算可能考虑溢出,如果考虑溢出,最高位抹去变为84AC,同时标志寄存器中表示溢出的那一位变为1

    (一定注意第三步要从右边开始分组,不能从左边)

    (如果16进制数是非整数,那么分组要从小数点两边开始分组,运气不好的话,最低位最高位要同时补0)

    位移运算还有另一种理解,左移n为相当于乘以2的n次方(当然是十进制的2的n次方),右移为除法,同理.手头有16进制计算器的话,直接算16进制的乘法运算.笔算也行,如果您会16进制乘法的话.当然先要把2的n次方化为16进制.可以先变2进制(1后面n个0),再分组化成16进制.