ARM语言中逻辑移位和算术移位的区别

 

ram语言中lsr逻辑右移和算术右移有什么区别

比如一个有符号位的8位二进制数11001101,逻辑右移就不管符号位,如果移一位就变成01100110。

算术右移要管符号位,右移一位变成10100110。

逻辑左移=算数左移,右边统一添0 

逻辑右移,左边统一添0 

算数右移,左边添加的数和符号有关e.g:1010101010,其中[]位是添加的数字

逻辑左移一位:010101010[0] 

算数左移一位:010101010[0] 

逻辑右移一位:[0]101010101 

算数右移一位:1]101010101 

算术左移和算术右移主要用来进行有符号数的倍增、减半;逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半。记住这个就可以了。

算术左移和算术左移虽然方式是一样的,但他们表示的移位后数的范围是不一样的,有符号数左移(算术左移)位后的范围是-128——127【指8位】而无符号数(算术左移)左移的范围是0——255.【指8位】。

其实不管是哪种移位(上述的)

1.汇编语言中的逻辑右移(SHR)是将各位依次右移指定位数,然后在左侧补0,算术右移(SAR)是将各位依次右移指定位数,然后在左侧用原符号位补齐。

2.高级语言右移运算符(>>)是将一个数的二进位全部右移若干位低位移出部分舍弃,左补0。

3.高级语言右移和汇编语言中的逻辑右移功能一样,但不同于算术右移。

posted @ 2017-07-15 20:47  大海在倾听  阅读(2299)  评论(0编辑  收藏  举报