C语言中左移运算符的问题
#include"stdio.h"voidmain(){charch;ch='e';ch<<4;printf("%c\n",ch);}运行结果是e#include"std...
#include"stdio.h"
void main()
{char ch;
ch='e';
ch<<4;
printf("%c\n",ch);
}
运行结果是e
#include"stdio.h"
void main()
{char ch;
ch='e';
ch=ch<<4;
printf("%c\n",ch);
}
运行结果是P
<<左移运算符可以将ASCII值左移?看书上写的<<是左移‘位’啊。。。上面的2个运行结果也是完全不懂,麻烦高手详细解释一下啊 展开
void main()
{char ch;
ch='e';
ch<<4;
printf("%c\n",ch);
}
运行结果是e
#include"stdio.h"
void main()
{char ch;
ch='e';
ch=ch<<4;
printf("%c\n",ch);
}
运行结果是P
<<左移运算符可以将ASCII值左移?看书上写的<<是左移‘位’啊。。。上面的2个运行结果也是完全不懂,麻烦高手详细解释一下啊 展开
5个回答
展开全部
void main()
{char ch;
ch='e';
ch<<4;//对ch代表的2进制码左移4位但根本没有把新值赋给ch,ch保持原值不变,例如int a = 5; a - 1; a还是5啊,对吧? :),所以结果是e啦
printf("%c\n",ch);
}
void main()
{char ch;
ch='e';
ch=ch<<4;//ch的ascll码是101,转换成2进制是01100101,左移4位是01010000,转换成10进制是80,正好是大写P的ascll值,所以结果是P啦
printf("%c\n",ch);
}
{char ch;
ch='e';
ch<<4;//对ch代表的2进制码左移4位但根本没有把新值赋给ch,ch保持原值不变,例如int a = 5; a - 1; a还是5啊,对吧? :),所以结果是e啦
printf("%c\n",ch);
}
void main()
{char ch;
ch='e';
ch=ch<<4;//ch的ascll码是101,转换成2进制是01100101,左移4位是01010000,转换成10进制是80,正好是大写P的ascll值,所以结果是P啦
printf("%c\n",ch);
}
展开全部
char ch='e'; 十六进制0x65
'e' 等于 二进制 0110 0101
ch=ch<<4;
左移4位 得 二进制 0101 0000
(高位0110 溢出, 自动丢失)
赋还到ch里.
二进制 0101 0000 是 P, 十六进制 0x50
#include <stdio.h>
void main()
{
char ch='e';
printf("%x %c\n",ch,ch); //0110 0101
ch=ch<<4;
printf("%x %c",ch,ch); // 0101 0000
}
'e' 等于 二进制 0110 0101
ch=ch<<4;
左移4位 得 二进制 0101 0000
(高位0110 溢出, 自动丢失)
赋还到ch里.
二进制 0101 0000 是 P, 十六进制 0x50
#include <stdio.h>
void main()
{
char ch='e';
printf("%x %c\n",ch,ch); //0110 0101
ch=ch<<4;
printf("%x %c",ch,ch); // 0101 0000
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include"stdio.h"
void main()
{char ch;
ch='e';
ch<<4;//这样移动没有效果 就像你操作ch+1 虽然做了操作 但对下面没有任何作用
printf("%c\n",ch);
}
#include"stdio.h"
void main()
{char ch;
ch='e';
ch=ch<<4;//e的ascii值是101二进制是01100101 左移4就是01010000也就是80 看ascii就知道是大写字母P
printf("%c\n",ch);
}
void main()
{char ch;
ch='e';
ch<<4;//这样移动没有效果 就像你操作ch+1 虽然做了操作 但对下面没有任何作用
printf("%c\n",ch);
}
#include"stdio.h"
void main()
{char ch;
ch='e';
ch=ch<<4;//e的ascii值是101二进制是01100101 左移4就是01010000也就是80 看ascii就知道是大写字母P
printf("%c\n",ch);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a没有变啊,b
=
a
<<
3的意思是把a左移后的结果赋值给b
就像
b
=
a+3;
b的值是a+3但是a本身没有加3的!
=
a
<<
3的意思是把a左移后的结果赋值给b
就像
b
=
a+3;
b的值是a+3但是a本身没有加3的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么计算出来的数据了
二进制
1111
1110
1111
1101
1111
1011
估计楼主你的这些数据应该是p1的,而temp的值是
二进制
0000
0001
0000
0010
0000
0100
注:
~temp只是求反并不改变temp本身的值,
对temp向高位移,低位是补0的而不会把前面的1换到后面来,
二进制
1111
1110
1111
1101
1111
1011
估计楼主你的这些数据应该是p1的,而temp的值是
二进制
0000
0001
0000
0010
0000
0100
注:
~temp只是求反并不改变temp本身的值,
对temp向高位移,低位是补0的而不会把前面的1换到后面来,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询