5个回答
展开全部
先看(10-b))%2,当b是偶数时,%2的值为0,否则为1。
再看>>,它是右移运算。就是把a的值以二进制表示后再作右移运算。如a=10,其二进制值为1010
右移1位即为101,如果a=5,其二进制值为101,右移1位即为10。C语言中非零值即代表真。
if (值非零)...
所以,此代码的实际意义为
if ((10-b)%2==1)&&(a>1)) || ((10-b)%2==0)&& (a>0)) || (a<0) ...
这里因为当a<0时,a的补码(计算机中C语言的数值用补码表示)的符号位(最高位肯定为1),所以,a右移1位后肯定非零。有关数的二进制表示你可另行详查:http://wenku.baidu.com/view/a296c3315a8102d276a22ff7.html
再看>>,它是右移运算。就是把a的值以二进制表示后再作右移运算。如a=10,其二进制值为1010
右移1位即为101,如果a=5,其二进制值为101,右移1位即为10。C语言中非零值即代表真。
if (值非零)...
所以,此代码的实际意义为
if ((10-b)%2==1)&&(a>1)) || ((10-b)%2==0)&& (a>0)) || (a<0) ...
这里因为当a<0时,a的补码(计算机中C语言的数值用补码表示)的符号位(最高位肯定为1),所以,a右移1位后肯定非零。有关数的二进制表示你可另行详查:http://wenku.baidu.com/view/a296c3315a8102d276a22ff7.html
富港检测技术(东莞)有限公司_
2024-08-05 广告
2024-08-05 广告
作为富港检测技术(东莞)有限公司的工作人员,关于ISTA 1A、2A及3A的区别及测试项目简述如下:ISTA 1A是非模拟集中性能试验,主要进行固定位移振动和冲击测试,针对不超过68kg的包装件。ISTA 2A则在此基础上增加了部分模拟性能...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
展开全部
就是这个意思:
int c = 10 - b;
c = a >> c;
c = c % 2;
if(c > 0) ... ;
翻译成汉语就是:看一下 a 右移 10 - b 位后还是不是奇数,
高手通常会理解成:a 的 第 10 - b + 1 位是不是 1
当然,你给的写法的效率是极低的,正常的系统编程会这么写:
int bitpos[] = { 0x0400, 0x0200, 0x0100, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
if( a & bitpos[b] )
....
希望您能理解并采纳
int c = 10 - b;
c = a >> c;
c = c % 2;
if(c > 0) ... ;
翻译成汉语就是:看一下 a 右移 10 - b 位后还是不是奇数,
高手通常会理解成:a 的 第 10 - b + 1 位是不是 1
当然,你给的写法的效率是极低的,正常的系统编程会这么写:
int bitpos[] = { 0x0400, 0x0200, 0x0100, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
if( a & bitpos[b] )
....
希望您能理解并采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if((a>>(10-b))%2)→(a>>(10-b))%2 →a>>(10-b)→10-b 反过来就是运算顺序,即
10-b→a>>(10-b)→a>>(10-b))%2→if((a>>(10-b))%2)
楼上看不懂的应该是a>>(10-b)操作,右移操作,具体的参考如下
http://baike.baidu.com/view/549681.htm
10-b→a>>(10-b)→a>>(10-b))%2→if((a>>(10-b))%2)
楼上看不懂的应该是a>>(10-b)操作,右移操作,具体的参考如下
http://baike.baidu.com/view/549681.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a右移10-b位后对2取余,然后判断结果是否为0
实际主要是在判断a右移10-b位后是否能让2整除
实际主要是在判断a右移10-b位后是否能让2整除
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先运算>> 再运算% 注意优先级
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询