将十进制的ip地址转化为二进制的ip地址
用于获取整型变量a[i]的第j位的值,当a[i]&(1<<j)的值不为0时,即表示a[i]的第j位为1。
j=0时获取第1位的值,j=1时获取第2位的值,依此类推。
1左移j位其第几位就是1,&操作是只有1&1才是1。a[i]&(1<<j)这样就是保留a[i]第j位的值,其他位都是0。这里的if判断a[i]&(1<<j)是0则输出0,不是输出1。就输出了a[i]的二进制
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
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。