Hamming Weight
The Hamming Weight of a binary number is simply a count of the number of 1's it contains. So the Hamming Weight of 100001 is 2 and 1101 is 3. It is named after Richard Hamming and is used in several logic disciplines including cryptography. Read more at Wikipedia.
The Hamming Weight is calculated by using a Sequential Read and a Count Up (incrementor) function.
Operation
 Clear the S and L registers and set register n to the input number.
 Run the train. When it returns to the station, register S will show the Hamming Weight of n.

Click grass to pause/run train  Click points to switch 0/1  Click start to reset train/points 
Lazy points switch between upper 0 or lower 1 branch lines. Trains arriving on a branch line switch the point to that line. 

Sprung points allow branch line trains to join the main line. All main line trains go straight ahead and never 'branch off'. 
How it works
Each data bit is read out in turn. If it is a 1 the counter is incremented. The program loops back to the start to read out the next data bit. When all bits have been read, the program halts.
The S and L registers are reset to 0 before each new calculation. The counter should never overflow as the maximum number of 1's the n register can contain is 3.
Note
Also see Hamming Weight function which is more efficient as the train passes on immeadiately if a data bit is a 0. This illustrates how a dedicated function is usually faster than a general computer layout of program loop and functions library.