A /23 network has a total of 512 IP addresses (2^9 for the first octet and 2^1 for the second octet).
If we want to create 16 subnets, we need to borrow 4 bits from the host portion of the address (2^4 = 16).
This leaves us with 19 bits for the network portion of the address (23 - 4).
Each subnet will then have a total of 32 IP addresses (2^5), with 30 usable addresses for hosts (one for the network address and one for the broadcast address).
Therefore, each subnet can have 30 actual hosts.