背景
受这个Unix.SE问题(当然还有我自己的回答)的启发。
当为接口指定IP地址时,通常以点分十进制形式给出:
a.b.c.d e.f.g.h
其中a.b.c.d
,实际地址e.f.g.h
是子网掩码。
当用二进制表示时,网络掩码基本上是一堆1
比特,然后是一堆0
比特。当将网络掩码与给定的IP地址按位与时,结果将是地址的网络部分,或者只是网络地址。这将被编程到主机的路由表中,以便主机知道从该接口发送发往该网络的任何内容。
通过从上面获取网络地址并将所有主机位设置为1,可以得出网络的广播地址。广播地址用于发送到给定网络内的所有地址。
挑战
给定点分十进制的IP地址和有效的网络掩码作为输入,请以点分十进制格式提供网络地址和广播地址作为输出。
- 输入的地址和掩码必须为点分十进制格式的两个字符串。您可以将其作为2个单独的字符串,作为2个字符串元素的列表或数组,或者将地址和掩码由一些合理的分隔符分隔的单个字符串传递。
- 输出格式受与输入格式相同的约束。
例子
Input Output
192.168.0.1 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.0 255.255.255.0 192.168.0.0 192.168.0.255
192.168.0.255 255.255.255.0 192.168.0.0 192.168.0.255
100.200.100.200 255.255.255.255 100.200.100.200 100.200.100.200
1.2.3.4 0.0.0.0 0.0.0.0 255.255.255.255
10.25.30.40 255.252.0.0 10.24.0.0 10.27.255.255
2
网络掩码是否只有255和0?
—
xnor 2015年
@xnor最后一个例子
—
user81655
252
。
最后的输出不应该
—
PurkkaKoodari 2015年
10.24.0.0 10.27.255.255
吗?
@ Pietu1998否,255.252.0.0是有效的掩码。二进制形式是11111111.11111100.00000000.00000000
—
Digital Trauma
@ Pietu1998哦,是的-对不起-现在已修复。
—
Digital Trauma 2015年