我就奇怪了

chaoyueheike 2009-05-06 06:13:09
11011001和
00001111进行按位与运算,结果书上怎么就给的
00001101呢?
...全文
96 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ououo 2009-05-06
  • 打赏
  • 举报
回复
可怜的孩子
lpf000 2009-05-06
  • 打赏
  • 举报
回复
书上错了而已
pega_windy 2009-05-06
  • 打赏
  • 举报
回复
lz你自己要算的是d=b&c;而不是d=a&c啊!
pega_windy 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chaoyueheike 的回复:]
那师兄看下子,就这个程序
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0 < <4);
d=b&c;
printf("%o,%d\n%o,%d\n",a,a,d,d);
}
输入331就是十进制数217,二进制就是11011001,而上面的c的值是00001111,
这个没错,进行位运算的话,结果是应该是00001001,而不应该是00001101,但是程序运行的时候
结果却又是它给的00001101啊,怎么回事?难道书上错了,程序运行时候也一起错?
[/Quote]

331換成16進制D9h=11011001h 這個是a b=a>>4=00001101h
d=1101&1111=1101
沒有錯!
ericming200409 2009-05-06
  • 打赏
  • 举报
回复
就是书写出错了
chaoyueheike 2009-05-06
  • 打赏
  • 举报
回复
顶一下,再帮我看看
chaoyueheike 2009-05-06
  • 打赏
  • 举报
回复
5楼师兄的我没看明白,它也没拿a和c作运算啊,我说的结果的意思是,上面的程序按理说应该得到的结果是00001001,一楼是师兄不是也说了吗,应该是书上错了,那也就是说结果该00001001嘛,运行也该是这个嘛,那为啥运行是00001101啊?
liangkaiyu 2009-05-06
  • 打赏
  • 举报
回复
b=a>>4;
b不就是00001101?
好像结果没有问题吧?
不是直接拿a跟C作与运算哦
chaoyueheike 2009-05-06
  • 打赏
  • 举报
回复
那师兄看下子,就这个程序
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o,%d\n%o,%d\n",a,a,d,d);
}
输入331就是十进制数217,二进制就是11011001,而上面的c的值是00001111,
这个没错,进行位运算的话,结果是应该是00001001,而不应该是00001101,但是程序运行的时候
结果却又是它给的00001101啊,怎么回事?难道书上错了,程序运行时候也一起错?
wl_99888 2009-05-06
  • 打赏
  • 举报
回复
书写错了呗.
lingyin55 2009-05-06
  • 打赏
  • 举报
回复
书上的结果错了,应该是
11011001
00001111
-----------
00001001
lingyin55 2009-05-06
  • 打赏
  • 举报
回复
11011001
00001111
-----------
上下这样对着看,位位相对,
与是只有两个同时为1才得1

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧