搜索
写经验 领红包
 > 职场

c语言中的右移(c语言中右移函数怎么用)

导语:C语言——右移的规则是这样吗?

在日常中,左移和右移都经常使用,对于左移而言,其规则是:

高位丢弃,低位补0

但是对于右移而言,其移位规则呢?说到这里,必须先引出两个概念:逻辑移位,算术移位。其具体规则为:

逻辑移位:移出的空位都用0补充算术移位:对于操作数是无符号型,算术移位等同于逻辑移位;对于有符号型,算术右移根据符号位填充移出的空位,正数补0,负数补1.

了解了两种移位,明显左移用的是逻辑移位。那么右移用什么规则呢?在C语言中,右移逻辑还是算术移位没有规定,是未定义行为。具体由编译器来决定。目前大部分编译规则是:

有符号数:算术右移无符号数:逻辑右移

针对这种规则,所以对操作数需要重视,防止类型的问题或者编译器的问题发生不必要的错误。比如:

某表达式结果的每一bit代表某事件发生情况,若表达式未加以约束,则通过右移可能不是预想的值。

往期推荐

了解一哈柔性数组

C语言中inline函数

忽视的sizeof返回值类型

本文内容由快快网络小梓整理编辑!