查看“按位左移”的源代码
←
按位左移
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
*'''bitshift left (<<), bitshift right (>>)''' *'''描述''' 出自Playground的 The Bitmath Tutorial 在C++语言中有两个移位运算符: 左移位运算符(«)和右移运算符(»)。这些操作符可使左运算元中的某些位移动右运算元中指定的位数。 *'''语法''' <pre style="color:green"> variable « number_of_bits variable » number_of_bits </pre> *'''参数''' <pre style="color:green"> variable - (byte, int, long) number_of_bits integer ⇐ 32 </pre> *'''例子''' <pre style="color:green"> int a = 5; // 二进制数: 0000000000000101 int b = a << 3; // 二进制数: 0000000000101000, 或十进制数:40 int c = b >> 3; // 二进制数: 0000000000000101, 或者说回到开始时的5 </pre> 当你将x左移y位时(x«y),x中最左边的y位会逐个逐个的丢失: <pre style="color:green"> int a = 5; // 二进制: 0000000000000101 int b = a << 14; // 二进制: 0100000000000000 - 101中最左边的1被丢弃 如果你确定位移不会引起数据溢出,你可以简单的把左移运算当做对左运算元进行2的右运算元次方的操作。例如,要产生2的次方,可使用下面的方式: <pre style="color:green"> 1 << 0 == 1 1 << 1 == 2 1 << 2 == 4 1 << 3 == 8 ... 1 << 8 == 256 1 << 9 == 512 10 << 1 == 1024 ... </pre> 当你将x右移y位(x»y),如果x最高位是1,位移结果将取决于x的数据类型。如果x是int类型,最高位为符号位,确定是否x是负数或不是,正如我们上面的讨论。如果x类型为int,则最高位是符号位,正如我们以前讨论过,符号位表示x是正还是负。在这种情况下,由于深奥的历史原因,符号位被复制到较低位: <pre style="color:green"> X = -16; //二进制:1111111111110000 Y = X >> 3 //二进制:1111111111111110 </pre> 这种结果,被称为符号扩展,往往不是你想要的行为。你可能希望左边被移入的数是0。右移操作对无符号整型来说会有不同结果,你可以通过数据强制转换改变从左边移入的数据: <pre style="color:green"> X = -16; //二进制:1111111111110000 int y = (unsigned int)x >> 3; // 二进制: 0001111111111110 </pre> 如果你能小心的避免符号扩展问题,你可以将右移操作当做对数据除2运算。例如: <pre style="color:green"> INT = 1000; Y = X >> 3; 8 1000 //1000整除8,使y=125 </pre> [[https://www.microduino.cn/wiki/index.php/Arduino_%E8%AF%AD%E6%B3%95%E6%89%8B%E5%86%8C/zh 返回Arduino语法手册]]
返回至
按位左移
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息