c++ - 这段代码中,a[i]&(1<<j)改怎么理解?
本文介绍了c++ - 这段代码中,a[i]&(1<<j)改怎么理解?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
将十进制的ip地址转化为二进制的ip地址
解决方案
if (a[i]&(1<<j))
这句的意思是判断 a[i]
的第 j
位是否为1。1 << x
就是将1左移x位(bit),比如 1 << 3 == 0b1000
。
我们假设 a[i] = 111
是32位,那么 a[i]
的二进制就是 0b0000_0000_0000_0000_0000_0000_0110_1111
, 1 << 6
是 0b1000000
,那么 a[i] & 1 << 6 == 0b0000_0000_0000_0000_0000_0000_0100_0000
,如果 a[i]
的第6位(首位是第0位)是1,那么 a[i] & 1 << 6
的结果就是非0(上面这个例子),如果a[i]
的第6位是0,a[i] & 1 << 6
的结果就是0。
这篇关于c++ - 这段代码中,a[i]&(1<<j)改怎么理解?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文