How many hosts fit in a CIDR block
An IPv4 CIDR prefix carves out a block of addresses. Two are reserved — the network address and the broadcast — so the rest are usable hosts.
- The number of usable hosts is 2^(32 − prefixBits) − 2.
- When prefixBits is less than 1 or 31 or more, return 0.
- Compute the power of two by repeated doubling, not a library function.
cidr_hosts(prefix_bits: int) → int
Where you start
def cidr_hosts(prefix_bits: int) -> int:
Worked examples
| Call | Result |
|---|---|
cidr_hosts(24) | 254 |
cidr_hosts(8) | 16777214 |
cidr_hosts(16) | 65534 |
cidr_hosts(31) | 0 |
Hint
Start at 1 and double it (32 − prefixBits) times.
Reference solution in Python
def cidr_hosts(prefix_bits: int) -> int:
if prefix_bits < 1 or prefix_bits >= 31:
return 0
exp = 32 - prefix_bits
hosts = 1
for _ in range(exp):
hosts = hosts * 2
return hosts - 2