搬家第44天-语句表练习:循环移动

前面学习了左移和右移,实际上还有循环移动,移出的位数值到另一端装入,比如下面的stl语句

L l#15790320

RLD 9

T MD32

最后数字是-505290751

15790320换成32位二进制是 0000,0000,1111,0000,1111,0000,1111,0000

循环左移第一次结果是0000,0001,1110,0001,1110,0001,1110,0000

循环左移第二次结果是0000,0011,1100,0011,1100,0011,1100,0000

循环左移第三次结果是0000,0111,1000,0111,1000,0111,1000,0000

循环左移第四次结果是0000,1111,0000,1111,0000,1111,0000,0000

循环左移第五次结果是0001,1110,0001,1110,0001,1110,0000,0000

循环左移第六次结果是0011,1100,0011,1100,0011,1100,0000,0000

循环左移第七次结果是0111,1000,0111,1000,0111,1000,0000,0000

循环左移第八次结果是1111,0000,1111,0000,1111,0000,0000,0000

循环左移第九次结果是1110,0001,1110,0001,1110,0000,0000,0001

最高位是符号位,为1,这是一个负数,要想知道相应的十进制数是多少,需要先减1,变成

1110,0001,1110,0001,1110,0000,0000,0000然后把符号位变成0,其他位取反,数据变成

0001,1110,0001,1110,0001,1111,1111,1111这个正数对应的十进制是505290751,

那么负数就是-505290751

 

 L    L#-15790320
     RRD   9
     T    MD    36
这一段是将双整型向右循环移动。-15790320换成32位的二进制数是1111,1111,0000,1111,0000,1111,0001,0000

循环右移第一次结果是0111,1111,1000,0111,1000,0111,1000,1000

循环右移第二次结果是0011,1111,1100,0011,1100,0011,1100,0100

循环右移第三次结果是0001,1111,1110,0001,1110,0001,1110,0010

循环右移第四次结果是0000,1111,1111,0000,1111,0000,1111,0001

循环右移第五次结果是1000,0111,1111,1000,0111,1000,0111,1000

循环右移第六次结果是0100,0011,1111,1100,0011,1100,0011,1100

循环右移第七次结果是0010,0001,1111,1110,0001,1110,0001,1110

循环右移第八次结果是0001,0000,1111,1111,0000,1111,0000,1111

循环右移第九次结果是1000,1000,0111,1111,1000,0111,1000,0111

这是一个负数,先减1得到1000,1000,0111,1111,1000,0111,1000,0110

然后符号位为0,各位取反,得到0111,0111,1000,0000,0111,1000,0111,1001,这个正数是2004908153,所以右移9位得到的负数是-2004908153

上一篇:strut2服务器与android交互数据


下一篇:java笔试(位运算)