在C语言中,左位移运算<<可以当作是乘以2^n,比如

212<<10

就是

11010100 → 110101000000000000

就是乘以2^10

212 << 10 = 212 × 2^10 = 212 × 1024 = 217088

如果结果超出变量的存储容量,移位过多会导致整数溢出。

右位移运算>>可以当作是除以2^n,比如

212>>3

就是

11010100 (original)
→ 00011010 (after shifting 3 positions)

就是除以2^3

212 >> 3 = 212 ÷ 2³ = 212 ÷ 8 = 26

这里要注意的是,对于无符号类型在左边加0,对于符号类型需要具体情况具体分析

标签: none

评论已关闭