Problems › TypeScript › network
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.
cidrHosts(prefixBits: int) → int
Where you start
function cidrHosts(prefixBits: number): number {
}
Worked examples
| Call | Result |
|---|---|
cidrHosts(24) | 254 |
cidrHosts(8) | 16777214 |
cidrHosts(16) | 65534 |
cidrHosts(31) | 0 |
Hint
Start at 1 and double it (32 − prefixBits) times.
Reference solution in TypeScript
function cidrHosts(prefixBits: number): number {
if (prefixBits < 1 || prefixBits >= 31) return 0;
const exp = 32 - prefixBits;
let hosts = 1;
for (let i = 0; i < exp; i++) hosts = hosts * 2;
return hosts - 2;
}