c语言中 (n & 1)什么意思啊
#include<stdio.h>voidTtoB(intn){if(n){TtoB(n>>1);printf("%d",n&1);//n&1什么意思啊?}}intmai...
#include <stdio.h>
void TtoB(int n)
{
if (n)
{
TtoB(n >> 1);
printf("%d", n & 1);//n&1什么意思啊?
}
}
int main(void)
{
int n;
while (scanf("%d", &n) != EOF)
{
TtoB(n);
putchar('\n');
}
return 0;
} 展开
void TtoB(int n)
{
if (n)
{
TtoB(n >> 1);
printf("%d", n & 1);//n&1什么意思啊?
}
}
int main(void)
{
int n;
while (scanf("%d", &n) != EOF)
{
TtoB(n);
putchar('\n');
}
return 0;
} 展开
16个回答
展开全部
<<是位操作符 1<<n 就是把1向左移N位 如果N 是2 那么移完了就是 二进制的 100 也就是8
>>是指右移
m>>=1 相当于m= m>>1
注意移位都是二进制下的
>>是指右移
m>>=1 相当于m= m>>1
注意移位都是二进制下的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是一个死循环,约束条件为1,也就是说恒为真,n会一直自增下去,但如果for里面有个break就回让for跳出循环,例如:
for (n=0;1;n++)
{
if (n == m)
{
break;
}
}
//其中m是外面确定好的一个数
for (n=0;1;n++)
{
if (n == m)
{
break;
}
}
//其中m是外面确定好的一个数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
位运算的位移操作。 左边的是被位移数据,右边的是要位移的位数
>> 右移
<< 左移
运算时,先将被位移数转化为2进制,然后进行左移或者右移。移出的空位通常用0填充。
(具体要看编译器和系统环境来决定是否用0填充)
例:
8 >> 1
00001000 >> 1
0 0000100
得到的结果是4
>> 右移
<< 左移
运算时,先将被位移数转化为2进制,然后进行左移或者右移。移出的空位通常用0填充。
(具体要看编译器和系统环境来决定是否用0填充)
例:
8 >> 1
00001000 >> 1
0 0000100
得到的结果是4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是
(n)?(c++):(c--)吧
这是一个三目运算符
表示(n)有表达式值是否为真
如果为真的话则返回(c++)表达式的值
否则将会返回(c--)表达式的值
然后这个注意一个后缀自增/减表达式的求值就可以了
(n)?(c++):(c--)吧
这是一个三目运算符
表示(n)有表达式值是否为真
如果为真的话则返回(c++)表达式的值
否则将会返回(c--)表达式的值
然后这个注意一个后缀自增/减表达式的求值就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般不会用这种写法把,光看这条是1左移n位的意思。不过还是要结合具体程序看。要是用在mcu里面c语言的话有时在往寄存器发送数据的时候会用到类似这种写法。因为寄存器一次只能接受1位数据而一个字节有8位,不过一般都是用赋值语句写的,如:for(i=0;i<8;i++)temp=temp<<1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询