
【计】 shift right logical
logic
【计】 logic
【经】 logic
【计】 right shift; shift right
逻辑右移(Logical Right Shift)是计算机系统中针对二进制数的基本位运算操作,其定义为:将操作数的所有二进制位整体向右移动指定位数,左侧空位用0填充,右侧溢出的位被丢弃。该操作与符号无关,适用于无符号整数或需要忽略符号位的场景。
从运算特性看,逻辑右移的数学表达式可表示为: $$ x gg_{L} k = leftlfloor frac{x}{2^k} rightrfloor $$ 其中$x$为操作数,$k$为移动位数。例如二进制数11110011(十进制243)执行逻辑右移2位后,结果为00111100(十进制60)。
与算术右移的关键区别在于填充位的处理方式:算术右移会复制原数的符号位(最高位),而逻辑右移始终补0。这种特性使逻辑右移成为处理无符号数据、颜色编码、哈希算法等场景的首选操作。
在编程语言实现层面,Java使用>>>运算符表示逻辑右移,C/C++中则通过将操作数强制转换为无符号类型实现。IEEE 754浮点数标准虽未直接规定逻辑右移,但其尾数处理机制隐含了类似的零扩展思想。
逻辑右移(Logical Right Shift)是计算机中一种二进制位操作,其核心特点是将二进制数的所有位整体向右移动,左侧空出的位始终补0,右侧移出的位直接丢弃。以下是详细解释:
符号表示
在编程语言中通常用>>>
表示(如Java、JavaScript),而C/C++中对无符号数使用>>
时默认执行逻辑右移。
操作过程
10110011
逻辑右移2位1 0 1 1 0 0 1 1
0 0 1 0 1 1 0 0
(左侧补0,右侧丢弃最后两位)数学意义
逻辑右移n位等价于将数值除以$2^n$并向下取整(仅适用于无符号数)。例如:十进制数147(二进制10010011
)逻辑右移2位后为36,即$147 div 4 = 36.75 approx 36$。
特性 | 逻辑右移 | 算术右移 |
---|---|---|
符号处理 | 左侧补0,忽略符号位 | 左侧补符号位(正数补0,负数补1) |
适用场景 | 无符号数、位掩码操作 | 有符号数的符号保留运算 |
编程示例 | Java中x >>> 2 |
C语言中x >> 2 (有符号数) |
(x >>> 4) & 0x0F
获取高4位。>>
是未定义行为,需显式转换为无符号类型。如需进一步了解位运算的底层实现,可参考计算机组成原理或编程语言手册。
半波电位膀胱扩张不易感受性财务状况变动表产品出口串输入输出法官的判决陈词罚款扣除额附加线路隔极木片观众席火警警报计量桶脊椎上的可修改参数冷凝塔柳基偶氮磺氨二甲嘧啶扭曲的片型聚合物普通债券起哄轻度巨大发育奇异性守恒定律认清善良的生活方式十二个铜表法肽定量器统计抽样程序往复蒸汽泵