读书人

帮帮忙!该如何解决

发布时间: 2013-12-02 12:00:40 作者: rapoo

帮帮忙!!
st[i]=st[i-1]<<1;if((t1>>i)&0x01)这两个语句分别是什么意思?
[解决办法]


st[i]=st[i-1]<<1;//将st[i-1]乘以2的值赋给st[i],左移一位等于乘以2
if((t1>>i)&0x01)//将t1右移i位,然后检查最后一位是否是1

[解决办法]
<<是左移操作符
比如st[i-1]=4,二进制就是0100,st[i-1]<<1=0100<<1=1000,就是8
同理,>>是右移

&是逻辑与运算,0x01代表十六进制的1,也就是除了最低位1,其余全部是0
所以就是检查t1右移i位后,最低位是否为1
[解决办法]
st[i]=st[i-1]<<1; // st[i]=st[i-1] * 2; 的装B写法
if((t1>>i)&0x01) // 判断t1的第i比特是否为1

读书人网 >C语言

热点推荐