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 Accuracymodified regardless of the value of Accuracymodified.
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 Accuracymodified 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!