详解C语言中的移位操作符(顺带复习原码反码补码)

本文详细讲解了C语言中的移位操作符,包括左移(<<)和右移(>>)。在理解移位运算前,先介绍了原码、反码和补码的概念。左移操作符将二进制数向左移动,高位补0,右移操作符则根据符号位决定补0或补1。注意,负数左移后需要转换回原码以获取正确结果。文章强调了右移可能的不确定性,并提醒避免使用负数作为移位位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、移位操作符是什么?

移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)>>(算术右移)>>(逻辑右移)

在学习移位操作符之前我们需要知道计算机中的数据都是以二进制的形式存储的,对于整数类型来说,它的二进制表示形式有三种,分别是:原码、反码、补码,准确来说,计算机存储的是整数的补码。
例如,在32位平台下,一个int类型变量占据4个字节 也就是32个比特位,计算机就将这个int类型变量的值存储在这32个比特位中,我们拿5来举例:
在这里插入图片描述

对于正整数来说 它的原码、反码、补码都相同
我们再来看看-5:
在这里插入图片描述
有了这些储备我们就可以使用移位操作符了


1.左移操作符 <<

左移运算是将一个二进制位的操作数按指定移动的位数向左移动移出位被

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值