2025-11-08 06:16:24
C51语言里左移操作就是用左移符号<<来实现的。比如写语句"result = value << 1"就是把value的每一位都往左推一位,最左边会掉出数据,右边补0。如果左移两位就写<<2,相当于把数值乘4。但要注意如果数值本身太大左移会溢出,比如8位数最大能存255,左移两位就变成610,超出范围就会出错。
为什么这样设计呢?因为计算机处理二进制时,左移一位相当于乘2,左移两位乘4,依次类推。比如数字3的二进制是00000011,左移两位变成00001100(十进制12),这正好是3×4的结果。但若左移三位就会变成00010000(十进制16),这时候最左边的1已经掉出,右边补三个0。实验数据证明,当原数是0x03(3)时,<<2得到0x0C(12),<<3得到0x00(0),高位丢失明显。所以使用左移操作时要考虑数值范围,避免溢出丢失重要数据。
本题链接: