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;
}
展开
 我来答
百度网友69b9011
2011-03-22
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
<<是位操作符 1<<n 就是把1向左移N位 如果N 是2 那么移完了就是 二进制的 100 也就是8
>>是指右移
m>>=1 相当于m= m>>1
注意移位都是二进制下的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2011-11-18 · TA获得超过7293个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3947万
展开全部
这是一个死循环,约束条件为1,也就是说恒为真,n会一直自增下去,但如果for里面有个break就回让for跳出循环,例如:
for (n=0;1;n++)
{
if (n == m)
{
break;
}
}
//其中m是外面确定好的一个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MichealSnake
2011-03-22 · 超过35用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:94.6万
展开全部
位运算的位移操作。 左边的是被位移数据,右边的是要位移的位数
>> 右移
<< 左移
运算时,先将被位移数转化为2进制,然后进行左移或者右移。移出的空位通常用0填充。
(具体要看编译器和系统环境来决定是否用0填充)
例:
8 >> 1
00001000 >> 1
0 0000100
得到的结果是4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿尔迈凡
2016-01-17 · TA获得超过8460个赞
知道大有可为答主
回答量:5744
采纳率:14%
帮助的人:1956万
展开全部
应该是
(n)?(c++):(c--)吧
这是一个三目运算符
表示(n)有表达式值是否为真
如果为真的话则返回(c++)表达式的值
否则将会返回(c--)表达式的值
然后这个注意一个后缀自增/减表达式的求值就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Hayman8o
2014-01-31
知道答主
回答量:5
采纳率:0%
帮助的人:6215
展开全部
一般不会用这种写法把,光看这条是1左移n位的意思。不过还是要结合具体程序看。要是用在mcu里面c语言的话有时在往寄存器发送数据的时候会用到类似这种写法。因为寄存器一次只能接受1位数据而一个字节有8位,不过一般都是用赋值语句写的,如:for(i=0;i<8;i++)temp=temp<<1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式