查看“左移、右移”的源代码
←
左移、右移
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于这些用户组的用户使用:
用户
,labplus
您可以查看与复制此页面的源代码。
*'''<big>描述</big>''' 出自Playground的 The Bitmath Tutorial 在C++语言中有两个移位运算符:左移位运算符(«)和右移运算符(»)。这些操作符可使左运算元中的某些位移动右运算元中指定的位数。 *'''<big>语法</big>''' variable « number_of_bits variable » number_of_bits *'''<big>参数</big>''' variable - (byte, int, long) number_of_bits integer ⇐ 32 *'''<big>例子</big>''' <pre style="color:blue"> int a = 5; // 二进制数: 0000000000000101 int b = a << 3; // 二进制数: 0000000000101000, 或十进制数:40 int c = b >> 3; // 二进制数: 0000000000000101, 或者说回到开始时的5 //当你将x 左移y 位时(x«y),x 中最左边的y 位会逐个逐个的丢失: int a = 5; // 二进制: 0000000000000101 int b = a << 14; // 二进制: 0100000000000000 - 101 中最左边的1 被丢弃 </pre> 如果你确定位移不会引起数据溢出,你可以简单的把左移运算当做对左运算元进行2的右运算元次方的操作。例如,要产生2 的次方,可使用下面的方式: <pre style="color:blue"> 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:blue"> X = -16; //二进制:1111111111110000 int y = (unsigned int)x >> 3; // 二进制: 0001111111111110 如果你能小心的避免符号扩展问题,你可以将右移操作当做对数据除2 运算。例如: INT = 1000; Y = X >> 3; 8 1000 //1000 整除8,使y=125 </pre>
返回至
左移、右移
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
软件
Labplus软件
mPython软件
Mixly集成盛思版
mpython_conn
教学套件
创客初级实验箱
创客初级实验箱进阶版
创客中级实验箱
创客中级实验箱Ⅱ
人工智能交互实验箱
桌面机器人
乐动魔盒
可穿戴作品电子套件
创意触摸板套装
乐动魔块中级套装
乐动魔块高级套装
bot:bit
编程造物套装
逻辑造物套装
人工智能套装
物联网套装
高中信息技术套装
掌控板初级套装
初中信息技术材料包
开源硬件教学套装
冲锋舟
造物
Arduino
乐动魔块(旧版)
Blue:bit电子积木
MicroBit系列
掌控板系列
AI摄像头V1.0
AI摄像头V2.0
1956
掌控魔盒
乐动掌控
乐动魔块
互动作品
森林奇遇记
创客森林
创客乐园
物联网演示系统
博物馆防盗演示实验系统
梦想舞台演示实验系统
智能家居演示实验系统
智能教室演示实验系统
智能停车场演示实验系统
DIY-木板系列
嘘寒问暖
硬币存款机
吼一声试试
斜不胜正灯
时光葫芦
旋转转盘
越光宝盒
治愈系萌犬
光明使者
避障机械车
DIY-亚克力系列
情绪机器人
创意七彩灯
温湿度机器人
留言机
游龙戏灯
三色时钟
光影精灵
光影时钟
智能应用系列
LED眼镜
32x16 RGB LED点阵屏
DIY环境温湿度显示系统
DIY创客空间访客记录仪
其他
金属结构件套装
耗材存取管理柜
更多
课程资源
常见问题解答
Arduino语法参考手册
链接
Labplus官网
STEAM创客教育平台
工具
链入页面
相关更改
特殊页面
页面信息