ARM嵌入式中 循环右移与逻辑右移,算术右移的区别 ,解释清楚点 最好举例说明 谢谢
发布网友
发布时间:2022-05-18 09:48
我来回答
共2个回答
热心网友
时间:2023-10-14 01:04
我是这么理解的,也不知道 对不对, 循环右移就是说右边被移出去的那一位补到左边去。
算术和逻辑的区别在于考不考虑符号位,比如1111 ,在算术来讲它是一个负数(最高位是1的是负数),不管你怎么移,它应还是一个负数,也就是说算术移位要保证符号位不变。因为在算术移位中移位被认为是除以2,(或者左移是乘2),所以如果一个负数,不管你怎么除2,它还是一个负数。也就是说算术右移1111一位的时候得1011,(-7 除2 = -3 不考虑小数点后面)。
而逻辑右移则什么都不用想,直接移,左补0,1111逻辑左移一位得0111,右移一位得1110.
热心网友
时间:2023-10-14 01:04
算术左移和算术右移主要用来进行有符号数的倍增、减半;
逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半。
记住这个就可以了。
算术左移和算术左移虽然方式是一样的,但他们表示的移位后数的范围是不一样的,有符号数左移(算术左移)位后的范围是-128——127【指8位】.而无符号数(算术左移)左移的范围是0——255.【指8位】
其实不管是哪种移位(上述的),均要考虑移位后的范围。我们这学期也学微机,刚好学到这,希望对你的理解有所帮助,
循环的话,应该考虑是移位出去的加回去还
我 百度来的,嘿嘿