microsoft.com has the ip address 23.96.52.53

Since the first number is $$23$$, this is class A.
Does this mean microsoft owns all the addresses from 23.0.0.0 to 23.255.255.255 ?

• Executive summary: IP address classes have been obsolete for a decade or more; maybe two decades. Why are people still teaching this stuff? – David Richerby Sep 23 '18 at 13:01
• we don't use classfull address nowadays. CIDR is used with NAT – AVIK DUTTA Jul 7 '19 at 18:49

The original division and allocation of IP addresses used a system called classful IP addressing. This is the division to which you are referring, in which a class A network would receive all addresses X.0.0.0-X.255.255.255 and have over 16.5 million host addresses. As designated below, the network bits in classful addressing are divided in 8-bit groupings.

The modern internet utilizes an alternative subnetting system called classless inter-domain routing (CIDR) to more efficiently allocate and distribute IPv4 addresses. This technique is based on variable length subnet masking (VLSM) which allows one to set arbitrary-length prefixes and accordingly allow address space to be allocated on bit lengths other than the previous 8 bit boundaries. This allows one to specify the most significant (i.e. network) bits with CIDR notation by notating the prefix by the number of bits designating the network, yielding the host bits by omission. We'll use your example for specific demonstration.

Utilizing ARIN to search the address number, we can see that the IP block in question is not, in fact 23.0.0.0 - 23.255.255.255, but 23.96.0.0 - 23.103.255.255 with a CIDR notation of 23.96.0.0/13. "/13" indicates that the first 13 bits of the IP address are used to specify the network address space and accordingly the remaining 19 bits specify the host space.

We'll convert the Dotted Decimal Notation (DDN) to binary to show how the math works. Keep in mind, binary is base-2, meaning that each bit is an exponentially higher value of 2:

27  26  25  24  23  22  21  20

-or-

128  64  32  16  8  4  2  1

Each octet has 8 bits, with 1 signifying that bit in use, 0 signifying it not in use. Any value 00000000 - 11111111 inclusive is valid with 00000000 representing 0 and 11111111 representing 255.

00010111.01100000.00000000.00000000       (23.96.0.0 in DDN) 00000000.00000111.11111111.11111111 +    (19 least significant or host bits) 00010111.01100111.11111111.11111111 =    (23.103.255.255 in DDN)