
Calculateur de sous-réseau IPv4
Calculer les adresses réseau et de diffusion, les masques, la plage et le nombre d’adresses d’un préfixe IPv4.
Le calcul traite les préfixes sans classe (CIDR) ; aucune hypothèse de classe A/B/C n’est appliquée.
Méthode et hypothèses
Version de méthode 1.0.0 · Mise à jour
Calculer un sous-réseau IPv4
Formule: Adresse réseau = adresse IPv4 ET masque ; adresse de diffusion = réseau OU masque générique.
Saisissez une adresse IPv4 et un préfixe CIDR. Le calcul fournit les bornes et masques du sous-réseau. Pour /31, les deux adresses sont comptées comme utilisables sur une liaison point à point ; /32 représente une adresse unique.
- address
- Adresse IPv4
- prefix
- Longueur du préfixe CIDR
IPv4 uniquement : adresse décimale pointée valide et préfixe CIDR de /0 à /32. La capacité conventionnelle retire réseau et diffusion pour /0 à /30 ; /31 suit le cas point à point et /32 désigne une adresse unique.
Reproduire le calcul en code
Ces exemples utilisent les mêmes entrées et le même calcul de base que cet outil. Adaptez la validation et le formatage à votre application.
JavaScript
const octets = '192.168.1.130'.split('.').map(Number);
const ip = octets.reduce((n, octet) => (n << 8n) | BigInt(octet), 0n);
const mask = (0xFFFFFFFFn << 8n) & 0xFFFFFFFFn; // /24
const network = ip & mask;
const format = n => [24n, 16n, 8n, 0n].map(s => Number((n >> s) & 255n)).join('.');
console.log(format(network)); // 192.168.1.0TypeScript
const octets = '192.168.1.130'.split('.').map(Number);
const ip = octets.reduce<bigint>((n, octet) => (n << 8n) | BigInt(octet), 0n);
const mask = (0xFFFFFFFFn << 8n) & 0xFFFFFFFFn; // /24
const network = ip & mask;
const format = (n: bigint) => [24n, 16n, 8n, 0n].map(s => Number((n >> s) & 255n)).join('.');
console.log(format(network)); // 192.168.1.0Python
from ipaddress import ip_network
network = ip_network('192.168.1.130/24', strict=False)
print(network.network_address) # 192.168.1.0
print(network.broadcast_address) # 192.168.1.255Java
long ip = 0;
for (String octet : "192.168.1.130".split("\\.")) {
ip = (ip << 8) | Integer.parseInt(octet);
}
long mask = (0xFFFFFFFFL << 8) & 0xFFFFFFFFL; // /24
long network = ip & mask;
System.out.printf("%d.%d.%d.%d%n", (network >>> 24) & 255, (network >>> 16) & 255,
(network >>> 8) & 255, network & 255); // 192.168.1.0C#
var bytes = System.Net.IPAddress.Parse("192.168.1.130").GetAddressBytes();
for (var i = 0; i < bytes.Length; i++) bytes[i] &= (i < 3 ? (byte)255 : (byte)0); // /24
Console.WriteLine(new System.Net.IPAddress(bytes)); // 192.168.1.0Autres langages
C
#include <arpa/inet.h>
#include <stdio.h>
#include <stdint.h>
struct in_addr ip; char out[INET_ADDRSTRLEN];
inet_pton(AF_INET, "192.168.1.130", &ip);
uint32_t network = ntohl(ip.s_addr) & 0xFFFFFF00u; // /24
ip.s_addr = htonl(network); inet_ntop(AF_INET, &ip, out, sizeof out);
puts(out); // 192.168.1.0C++
#include <arpa/inet.h>
#include <cstdint>
#include <iostream>
struct in_addr ip{}; char out[INET_ADDRSTRLEN];
inet_pton(AF_INET, "192.168.1.130", &ip);
ip.s_addr = htonl(ntohl(ip.s_addr) & 0xFFFFFF00u); // /24
inet_ntop(AF_INET, &ip, out, sizeof out); std::cout << out; // 192.168.1.0PHP
$bytes = inet_pton('192.168.1.130');
$ip = unpack('N', $bytes)[1] & 0xFFFFFF00; // /24
echo inet_ntop(pack('N', $ip)); // 192.168.1.0PowerShell
$bytes = [Net.IPAddress]::Parse('192.168.1.130').GetAddressBytes()
$bytes[3] = 0 # /24: clear host octet
[Net.IPAddress]::new($bytes) # 192.168.1.0