> 职场
c语言中的右移(c语言中右移函数怎么用)
导语:C语言——右移的规则是这样吗?
在日常中,左移和右移都经常使用,对于左移而言,其规则是:
高位丢弃,低位补0
但是对于右移而言,其移位规则呢?说到这里,必须先引出两个概念:逻辑移位,算术移位。其具体规则为:
逻辑移位:移出的空位都用0补充算术移位:对于操作数是无符号型,算术移位等同于逻辑移位;对于有符号型,算术右移根据符号位填充移出的空位,正数补0,负数补1.
了解了两种移位,明显左移用的是逻辑移位。那么右移用什么规则呢?在C语言中,右移逻辑还是算术移位没有规定,是未定义行为。具体由编译器来决定。目前大部分编译规则是:
有符号数:算术右移无符号数:逻辑右移
针对这种规则,所以对操作数需要重视,防止类型的问题或者编译器的问题发生不必要的错误。比如:
某表达式结果的每一bit代表某事件发生情况,若表达式未加以约束,则通过右移可能不是预想的值。
往期推荐了解一哈柔性数组
C语言中inline函数
忽视的sizeof返回值类型
本文内容由快快网络小梓整理编辑!