The other answer by the_netts is correct, but its missing a small detail which I'd like to point out.

In Gen 1,

The random number R is a pseudorandomly generated integer between 0 and 255 (inclusive).

In the Generation I handheld games and Pokémon Stadium, if R is strictly less than A, the move hits, otherwise it misses. In the Generation I handheld games only, this results in a bug where, unless the accuracy check is skipped entirely, every move has at least a 1 in 256 chance to miss—this is because if R is 255, it will always be greater than or equal to Accuracy_{modified} regardless of the value of Accuracy_{modified}.

**Source**

In simple words, a random number "R" is used in the calculation of accuracy, which varies between 0 and 255 in the Pokemon games. In Gen 1 handheld games, R must be strictly less than A for a move to hit, where A is Accuracy_{modified} in the following formula:

For a 100% accuracy move with no evasion/accuracy stat changes, A would be 255. Thus, as R varies from 0 to 255, there would be 1 in 256 chance of R being 255. In such a case, R would be equal to A and this would result in the move missing.

**Hence, there is a 1 in 256 chance of a 100% accuracy move missing in the Gen 1 handheld games only for no accuracy/evasion stat changes.**

This mechanic is also replicated in the popular online Pokemon battle simulator, Pokemon Showdown! for the respective Gen 1 formats.

**For all other Gens, 100% accuracy moves will always hit for no accuracy/evasion stat changes.**

Hope this helps!