码迷,mamicode.com
首页 > 编程语言 > 详细

单片机学习--c语言中的右移位运算

时间:2020-05-09 19:04:01      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:情况   两种   应该   定义   bsp   出现   有符号数   无符号   左移   

移位操作:简单的把一个值的位向左或向右移动。在左移过程中,值最左边的几位被丢弃,右边多出来的几个空位则由0补齐。


 

右移操作:却面临着一个左移操作没有的问题。从左边移入新值时,可以选择两种方案

                1、逻辑移位,左边移入的用0填充。

                2、算术移位,左边移入的位由原先该值的符号位决定,符号位为1则填充1,符号位为0则填充0

          原值:10010110                逻辑移位后:00100101   算术移位:11100101


 

warning:无符号值的所有移位操作,都是逻辑移位。  对于有符号值得移位操作采用哪种方法,就要根据你所使用得编译器来解决。   一个程序如果出现了有符号数得右移操作,它就是不可移植的。

 

a<<-5   不是表示右移5位。在某个机器上,这个表达式实际执行了左移27位的操作。

          对于这些未定义 | 移位的操作比操作的位数还要多的情况,    具体效果都是根据编译器来定的。它们的结果也很可能不可预测。所以应该避免使用这种操作

                        

单片机学习--c语言中的右移位运算

标签:情况   两种   应该   定义   bsp   出现   有符号数   无符号   左移   

原文地址:https://www.cnblogs.com/mengnan-konghai/p/12859240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!