C语言程序设计书上写以下代码让x只保留最低6位:x = x & ~077
将把X的后六位设置为0,可是077的二进制码为1001101,取反不是0110010么?怎么把X的后六位置0?...
将把X的后六位设置为0,可是077的二进制码为1001101,取反不是0110010么?怎么把X的后六位置0?
展开
2个回答
展开全部
077是8进制数换成二进制是111 111 //不考虑补零。
//考虑也一样, 00111111,以一个字节为例, 取反 11000000
取反 000 000
x = x & ~077//很明确得题,x按位于 (~077)//按位求反077后的值
0&0=0
1&0=0
0&1=0
所以是后六位设置为零! 因为不管本来的二进制是什么 & 后都是零。
因为按位于的对象是0
/*
x = x & 077 //这才是将6个低二进制位外的,全部设置为零。
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询