标签:情况 两种 应该 定义 bsp 出现 有符号数 无符号 左移
移位操作:简单的把一个值的位向左或向右移动。在左移过程中,值最左边的几位被丢弃,右边多出来的几个空位则由0补齐。
右移操作:却面临着一个左移操作没有的问题。从左边移入新值时,可以选择两种方案
1、逻辑移位,左边移入的用0填充。
2、算术移位,左边移入的位由原先该值的符号位决定,符号位为1则填充1,符号位为0则填充0
原值:10010110 逻辑移位后:00100101 算术移位:11100101
warning:无符号值的所有移位操作,都是逻辑移位。 对于有符号值得移位操作采用哪种方法,就要根据你所使用得编译器来解决。 一个程序如果出现了有符号数得右移操作,它就是不可移植的。
a<<-5 不是表示右移5位。在某个机器上,这个表达式实际执行了左移27位的操作。
对于这些未定义 | 移位的操作比操作的位数还要多的情况, 具体效果都是根据编译器来定的。它们的结果也很可能不可预测。所以应该避免使用这种操作
标签:情况 两种 应该 定义 bsp 出现 有符号数 无符号 左移
原文地址:https://www.cnblogs.com/mengnan-konghai/p/12859240.html