Connection 1 of 5
Keep the position; change the ruler

The red flesh pixel's red value 240 on the 0–255 number line and its position 240 ÷ 255 ≈ 0.9412 on the 0–1 number line, beside the watermelon.
The red flesh pixel at row 10, column 4 has a red value of 240. On a ruler from 0 to 255 it sits near the far end. We want a number that sits at the same position on a ruler from 0 to 1.
We are changing how the intensity is written, not asking the pixel to emit less light.
240 / 255 ≈ 0.9412Read it as: 240 is about 94.1% of the old maximum; 0.9412 is the same fraction of the new maximum.
Connection 2 of 5
Why divide by 255?
The old maximum must land on the new maximum: 255 becomes 1. Dividing by 255 does that and applies the same proportional change everywhere else. Zero stays zero, and a larger byte stays larger.
A byte has 256 possible values because zero is included, but its largest value is 255, so 255 is the divisor. The midpoint 127.5 maps to 0.5 but is not itself a byte; the nearest bytes are 127 and 128.
0 / 255 = 0 127.5 / 255 = 0.5 255 / 255 = 1Read it as: The denominator is the old ruler's maximum, not a brightness adjustment.
Connection 3 of 5
Each channel value is scaled on its own
For the red flesh pixel, 240 / 255 ≈ 0.9412, 6 / 255 ≈ 0.0235 and 56 / 255 ≈ 0.2196. Over the whole 17 × 18 picture that is 918 separate divisions. Nothing is moved, mixed between channels, reshaped or flattened.
The page shows four decimals to save space, but the stored value is the full-precision quotient, 0.941176470588…. Only the label is rounded.
scaled = original / 255Read it as: Every value keeps its pixel and channel address; only its scale changes.
Connection 4 of 5
The display must know the scale

The same watermelon drawn from bytes, from scaled values through the ×255 adapter, and from scaled values read directly as bytes, labelled as a mismatch.
To draw scaled values on a display that expects bytes, an adapter multiplies the full-precision value by 255 and rounds at the display boundary: 0.941176470588… × 255 gives 240 again. The same picture appears.
Handing 0.9412 straight to a display that reads bytes is a mismatch: it reads about 1 out of 255 and the picture goes almost black. Unchanged appearance is not automatic; the reader has to match the scale.
display byte = round(scaled × 255)Read it as: Round only after multiplying the stored value, never the rounded label.
Connection 5 of 5
A model expects a convention, and scaling is not standardization
A model needs the preprocessing it was trained to expect: bytes, 0 to 1, −1 to 1, or standardized values. Dividing by 255 is one convention. It does not guarantee better predictions and it is not batch or layer normalization.
Standardization is (x − mean) / standard deviation, with x, mean and standard deviation in the same units. For the 12 red values of a small crop on the 0–1 scale, the mean is about 0.667 and the standard deviation about 0.429, so standardized values run from about −1.51 to 0.78. Dividing by 255 alone does not give mean 0 or standard deviation 1. These numbers come from one crop and are an illustration, not a model's preprocessing.
x / 255 versus (x − mean) / stdRead it as: Scaling changes the range; standardization recentres and rescales using given statistics.
Move one pixel along both rulers
Change its byte value. Both markers describe the same fraction of their ruler, even though their numeric labels differ.
Both positions: 50.20% of the maximum. The numerical description changed; the relative intensity did not.
Connect it back to the picture
Dividing by 255 is a unit change: it changes the numerical range, keeps every value at its own pixel and channel, and the picture is recovered when the numbers are read on the matching scale. Which scale a model wants is part of how it was trained.
Full notation and technical reference
The expressions below collect the operations discussed above. You can return here when you want the compact notation.
scaled = original / 255
display byte = round(scaled × 255)- original is an 8-bit channel value in [0, 255]; scaled is its full-precision quotient in [0, 1].
- The display adapter multiplies the stored full-precision value by 255 and rounds only at the byte-display boundary.
Numerical reference
The watermelon's red flesh pixel (240, 6, 56) becomes 240/255 ≈ 0.9412, 6/255 ≈ 0.0235 and 56/255 ≈ 0.2196 (0.941176470588… is stored). Multiplying the stored values by 255 gives 240, 6 and 56 again.
Where this explanation stops
Reading 0.9412 directly as a byte is a mismatch, not a recovery. A model must receive the convention it was trained on: bytes, 0 to 1, −1 to 1 or standardized values. (x − mean) / standard deviation is a different operation from dividing by 255 and is only previewed here.