各位神牛: 请问 a[i>>1] 、 (i&1)在C语言中是什么意思?
4个回答
展开全部
a[i>>1] 中 i>>1 是 让 整型数 i 的数值 右移 2 进制 1 位 的运算,用 算得的值 作 a 数组 的下标。
例如: i=5; 2 进制 是 0101; 右移 2 进制 1 位 得 0010;十进制 2。
i>>1 效果 与 i = i / 2 一样。
-----------
(i&1) 是按位 与 运算,相当于 取出 i 的2 进制数值的个位数。 如果 i 是 十进制 奇数,i&1 得 1; 如果 i 是 十进制 偶数,i&1 得 0。
如果 是 条件语句:
if (i&1) {.....} else {.....};
意思是:
if (i&1) {i 是 奇数,执行这里} else {.i 是 偶数,执行这里....};
0 -- 布尔值“假”,1 -- “真”。
例如: i=5; 2 进制 是 0101; 右移 2 进制 1 位 得 0010;十进制 2。
i>>1 效果 与 i = i / 2 一样。
-----------
(i&1) 是按位 与 运算,相当于 取出 i 的2 进制数值的个位数。 如果 i 是 十进制 奇数,i&1 得 1; 如果 i 是 十进制 偶数,i&1 得 0。
如果 是 条件语句:
if (i&1) {.....} else {.....};
意思是:
if (i&1) {i 是 奇数,执行这里} else {.i 是 偶数,执行这里....};
0 -- 布尔值“假”,1 -- “真”。
展开全部
a肯定是个指针或者数组名, a如果是数组名,i>>1就是数组下标,a如果是指针,i>>1就代表指针a偏移的位数, i>>1就不用我解释了吧,就把i 右移一位, 一般情况就就是i的二分之一. i&1, 就是测试i是奇数还是偶数,如果i&1是0的话i就是偶数,i&1是1的话就是偶数.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i>>1表示i右移一位,i&i表示i与1按位与。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询