C语言按位运算符问题
答案:2 悬赏:70 手机版
解决时间 2021-03-14 14:09
- 提问者网友:鼻尖触碰
- 2021-03-14 05:08
在《C程序设计语言(第二版)》第39页说 n=n&0177 将n中除7个低二进制位外的其他各位均置为0是什么意思
最佳答案
- 五星知识达人网友:行路难
- 2021-03-14 06:04
楼主你好
&在c语言中是按位与运算 凡是位运算 应该先将对应的数转换为二进制 然后再继续运算
首先楼主注意0177是以0开头的 说明是八进制数
一个八进制数对应三个二进制位
八进制数1对应: 001
八进制数7对应: 111
因此: 0177对应的二进制数就是: 001 111 111
再则 这里除了底7位是1外 其余的都是0
另外按位与运算&就是只要有0 那么必为0
因此这里就是将n中除7个低二进制位外的其他各位均置为0
希望能帮助你哈
&在c语言中是按位与运算 凡是位运算 应该先将对应的数转换为二进制 然后再继续运算
首先楼主注意0177是以0开头的 说明是八进制数
一个八进制数对应三个二进制位
八进制数1对应: 001
八进制数7对应: 111
因此: 0177对应的二进制数就是: 001 111 111
再则 这里除了底7位是1外 其余的都是0
另外按位与运算&就是只要有0 那么必为0
因此这里就是将n中除7个低二进制位外的其他各位均置为0
希望能帮助你哈
全部回答
- 1楼网友:枭雄戏美人
- 2021-03-14 07:32
在b=(++a)*(--a);这条语句运行过程中,++a和--a是不会变值的,结果是25的话话应该是(++a)和(--a)同时运算,那么运算过程时是按着5*5进行运算,而运算结束之后a才会变值,先加了1然后减了1,也就是a还是5。
而有的程序语言执行结果会变成30,原因应该在(++a)和(--a)这两个运算不是同步的。a值的变化应该是下面的这种
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯