C语言中的移位运算

左移运算:对于一个位表示为的操作数 x,x << k 会生成一个指,其位表达式为也就是说将x右边的w-k位向左移动k位,丢弃最高的k位,并在右端补k个0.

例如:操作数 x 位表达式为 01010101,x << 3 将得到 10101000。

右移运算:所有的左移操作都是一样的,然而右移运算 x >> k 分为逻辑右移和算术右移。逻辑右移与左移相似,在左端补 k 个0,得到的结果是。而算术右移是在左端补k个操作数 x 最高有效位的值,得到的结果是 

例如:操作数 x 位表达式为 00110101, x >> 3(逻辑右移) 将得到 00000110。

           操作数 x 位表达式为 00110101, x >> 3(算术右移) 将得到 00000110。

           操作数 x 位表达式为 00110101, x >> 3(算术右移) 将得到 111001110。

几乎所有的编译器/机器组合都对有符号数使用算术右移。而对于无符号数右移必须是逻辑的。

下面再给出一个例子:

 

 其中斜体的数字表示最右端(左移)或最左端(右移)填充的值。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值