Divide *anything* by 65535 in C using normal (16 bit) unsigned integer maths and the result will be 0 or 1, and it can only be 1 if the input value was exactly 65535. If you need a meaningful result, the expression would need to be carefully written to use long integer (32 bit) maths, and the expression would probably need to be rearranged so that intermediate values didn't overflow or underflow.
Dividing by 65535 is also very slow - it it vastly preferable to divide by 65536 which the compiler will implement by discarding the two low bytes (assuming you are using >16 bit maths). You might say why not simply use floats or doubles? Well, what was slow before (32 bit integer division by a non-power-of-two), becomes painfully slow, and the accuracy tends to be even worse for the same variable size as some of the bits that were being used for the actual number are now used for the exponent.
Fixed point integer maths is vastly preferable for small embedded systems, but you do have to plan each operation of each calculation to avoid overflows or loosing too much accuracy due to bits dropped at the LSB end, shifting the intermediate value up or down as required. Often the implementation looks nothing like the theoretical calculation . . . .
The distinction between Arduino and Atmel ATmega328P isn't particularly useful for this problem as the Arduino toolchain uses GCC, which you are likely to be using anyway for AVRs (unless you've dropped lots of $$$$ on the Keil compiler) and the behaviour of integer maths in C is set by the ANSI C89 standard and its successor ANSI/ISO standards for C and C++., which have generally retained backward compatible behaviour with the C89 standard.