黑马程序员技术交流社区

标题: 移位问题 [打印本页]

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


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

希望大家不要犯和我一样的错误
作者: Er01c    时间: 2014-4-19 10:56
  1. 0000 0000 0000 0000 0000 0000 0000 0100  4
  2. 0000 0000 0000 0000 0000 0000 1000 0000  左移5位  128 (4乘2的5次方)
复制代码

作者: 刘元明    时间: 2014-4-19 10:56
以64位编译器来说,int类型占4个字节,最后1个字节可以表示为0000 0100  a<<5表示向左移动5位,最后1个字节也就变为0100 0000,a的值为128
作者: blz01003hm    时间: 2014-4-19 12:27
a的值还是4。
这样写a的值才会改变
int a=4;
a=a<<5;

作者: 杨勇    时间: 2014-4-19 15:31
把代码改成是
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.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2