A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangenhao 中级黑马   /  2014-4-19 10:49  /  958 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jiangenhao 于 2014-4-20 22:03 编辑
  1. int a = 4;
  2. a<<5;
  3. 请问这时a的值是多少?
复制代码


答案 此时 a 的值 以为为 4
对a以为并不会改变a本身的值
如果想要得到结果需要定义一个变量来接受移位之后的值
如 int result = a << 5

希望大家不要犯和我一样的错误

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
  1. 0000 0000 0000 0000 0000 0000 0000 0100  4
  2. 0000 0000 0000 0000 0000 0000 1000 0000  左移5位  128 (4乘2的5次方)
复制代码
回复 使用道具 举报
以64位编译器来说,int类型占4个字节,最后1个字节可以表示为0000 0100  a<<5表示向左移动5位,最后1个字节也就变为0100 0000,a的值为128
回复 使用道具 举报
a的值还是4。
这样写a的值才会改变
int a=4;
a=a<<5;
回复 使用道具 举报 1 0
把代码改成是
int a=4;
a=a<<5;
分析a的值:
4在内存中存储:0000 0000 0000 0000 0000 0000 0000 0100
移位后变成:     0000 0000 0000 0000 0000 0000 0000 0100 00000
此时a的值为2的7次方  a=128.

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马