请问int n=2,m=1<

zgmf_x20a 2008-02-13 02:46:28
RT,Thanks!
...全文
10134 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttkk_2007 2008-03-04
  • 打赏
  • 举报
回复
这个问题哪本书上都有讲吧
liufangbj 2008-03-04
  • 打赏
  • 举报
回复
左移位
sycorc 2008-03-03
  • 打赏
  • 举报
回复
学习下。
r_swordsman 2008-03-03
  • 打赏
  • 举报
回复
二进制向左移位操作,操作之后,最左边的位丢弃,最右边的位补 0,结果的位数和机器有关。
在 32 位系统中,如 0x12345678 << 8, 具体过程为:
0x12345678 对于的二精致形式为:

1 2 3 4 5 6 7 8
00010010 00110100 01010110 01111000

移位过程为:
1 2 3 4 5 6 7 8
00010010 00110100 01010110 01111000
左移 8 个二进制位
1 2 3 4 5 6 7 8 0 0
00010010 00110100 01010110 01111000 00000000

在 32 位系统中,只取最低 32 位(蓝色部分),上面的高 8 位(红色部分)为多于的,丢弃,

所以结果为

3 4 5 6 7 8 0 0
00110100 01010110 01111000 00000000

即 0x34567800。


r_swordsman 2008-03-03
  • 打赏
  • 举报
回复
二进制向左移位操作,操作之后,最左边的位丢弃,最右边的位补 0,结果的位数和机器有关。
在 32 位系统中,如 0x12345678 << 8, 具体过程为:
0x12345678 对于的二精致形式为:

1 2 3 4 5 6 7 8
00010010 00110100 01010110 01111000

移位过程为:
1 2 3 4 5 6 7 8
00010010 00110100 01010110 01111000
左移 8 个二进制位
1 2 3 4 5 6 7 8 0 0
00010010 00110100 01010110 01111000 00000000

在 32 位系统中,只取最低 32 位(蓝色部分),上面的高 8 位(红色部分)为多于的,丢弃,

所以结果为

3 4 5 6 7 8 0 0
00110100 01010110 01111000 00000000

即 0x34567800。


r_swordsman 2008-03-03
  • 打赏
  • 举报
回复
二进制向左移位操作,操作之后,最左边的位丢弃,最右边的位补 0,结果的位数和机器有关。
在 32 位系统中,如 0x12345678 << 8, 具体过程为:
0x12345678 对于的二精致形式为:

1 2 3 4 5 6 7 8
00010010 00110100 01010110 01111000

移位过程为:
1 2 3 4 5 6 7 8
00010010 00110100 01010110 01111000
左移 8 个二进制位
1 2 3 4 5 6 7 8 0 0
00010010 00110100 01010110 01111000 00000000

在 32 位系统中,只取最低 32 位(蓝色部分),上面的高 8 位(红色部分)为多于的,丢弃,

所以结果为

3 4 5 6 7 8 0 0
00110100 01010110 01111000 00000000

即 0x34567800。


Chappell 2008-03-03
  • 打赏
  • 举报
回复 1
左移位
a<<n
解释:
for(int i =1;i<=n;i++)
a = a*2

:-)
hslinux 2008-02-29
  • 打赏
  • 举报
回复
基础很重要。有时间还是多看会教程吧。
secper 2008-02-29
  • 打赏
  • 举报
回复
左移符号
zhoufuguo8802 2008-02-29
  • 打赏
  • 举报
回复
左移符号。
不越界的情况下,左移一位相当于乘2。
此时m==4;

& 按位与
~ 按位取反
¦ 按位或
< < 按位左移
∧ 按位异或
> > 按位右移
a < <b,其作用是将a的补码位全部左移b位,高位左移后丢弃,而右边低位补0
左移n位实际上相当于乘以2的n次方。
a> > b,其作用是将a的补码位全部右移b位,右移移出的二进制位全部丢弃,左边补b个0或1。
右移n位实际上相当于被2的n次方整除。
ZFelix 2008-02-29
  • 打赏
  • 举报
回复
其实这个在这里就没有必要了,既然是初始化,为什么搞得让人看不懂
直接int n = 2,m = 4;不就得了
---------------------------------
有必要呀,如果将来要改成 n=17怎么办?
tjltail 2008-02-26
  • 打赏
  • 举报
回复
int n=2,m=1<<n

--------------------------
<<左移操作符,在不越界的情况下等于将被移动的数乘以2

其实这个在这里就没有必要了,既然是初始化,为什么搞得让人看不懂
直接int n = 2,m = 4;不就得了
wisoper 2008-02-26
  • 打赏
  • 举报
回复
我分少,来接
书上介绍的比较详细
zh1369 2008-02-25
  • 打赏
  • 举报
回复
运算符
ShardowM 2008-02-25
  • 打赏
  • 举报
回复
左移位
Alex5111985 2008-02-25
  • 打赏
  • 举报
回复
来迟N步
冰矿 2008-02-24
  • 打赏
  • 举报
回复 1

n = 3; //n二进制为11
b = n<<1; //n向左移动一位,b二进制为110
b = n<<2; //n向左移动二位,b二进制为1100
b = 1<<n; //1像左移动n位,相当于2的n次方,b二进制为1000
yuyunliuhen 2008-02-23
  • 打赏
  • 举报
回复
左移位
homesos 2008-02-22
  • 打赏
  • 举报
回复
左移位
把要左移位的十进制数化为二进制,然后往左移N位,左边移走的不要,右边补零。(就是把左边的N位去掉,在右边补N个零)
基础问题,LZ要多看看书啊。
星羽 2008-02-22
  • 打赏
  • 举报
回复
左移,左移n位相当于乘n次的2
加载更多回复(22)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧