According to the IEEE 754 standard, any bit pattern with all exponent bits one and at least one significand bit one is a NaN. By that rule, there are 253-2 NaNs for 64-bit floating point.
You did not specify a language. Some languages, or language implementations, that use IEEE 754 may prefer a particular bit pattern for NaN, and try to force NaNs to that pattern. For example, the Java Language Specification says:
For the most part, the Java SE platform treats NaN values of a given
type as though collapsed into a single canonical value, and hence this
specification normally refers to an arbitrary NaN as though to a
canonical value.
To get the full story about how floating point arithmetic will behave in your programs you need to consider the appropriate language rules as well as the underlying floating point implementation.