( bzt | 2024. 01. 23., k – 10:48 )

Ezzel inkább az a bökkenő, hogy a Z80-nak csak két 8 bites regisztere van operandusként a műveletekre, szóval nem tud 32 biten dolgozni, csak max. 16 biten. Viszont maga az ötlet szerintem nagyon jó, egy kis átalakítással

uint16_t lfsr_16(uint16_t in)
{
 uint16_t       out;
 if ( in & 1 )
        out = (1<<15)|((in*16807)>>1);
 else
        out = in>>1;

 return(out);
}

Akár még Z80-on is működhet. (Megjegyzés, a 16807 nemcsak egy hasraütésszerű szám, hanem ebből az 1988-as véletlenszámokkal foglalkozó, kiváló tanulmányból ered.)