Explanantion of Addressing
It is actually slightly confusing owing to the (actually redundant) &amp; 0xff in there.

What is happening is first the address is right-shifted so as to place the byte of interest at that moment in the lowest 8-bits (address &gt;&gt; 16 for instance to get bits 16-23 moved to bits 0-7) and then the lowest 8 bits are masked off by ANDing them with 0b11111111 (0xFF). This removes any bits that are above the 8 bits we are interested in - however the fact that it's cast to uint8_t and also passed to a function that expects uint8_t makes that masking redundant. Any bits above the first 8 are discarded anyway.

So to take an example address of, say, 100,000 (which is 0x186A0 in hex) and run those three commands on it, we end up with:

SPI.transfer((uint8_t)(address &gt;&gt; 16) &amp; 0xff);

0x186A0 &gt;&gt; 16 = 0x00001
0x00001 &amp; 0xFF = 0x01

SPI.transfer((uint8_t)(address &gt;&gt; 8) &amp; 0xff);

0x186A0 &gt;&gt; 8 = 0x00186
0x00186 &amp; 0xFF = 0x86

SPI.transfer((uint8_t)address);

(uint8_t)0x186A0 = 0xA0


The end result as you can see is three SPI transfers each sending a single byte:

0x01, 0x86, 0xA0


And that corresponds to the protocol for that chip, which is basically:

&lt;Command&gt;, &lt;Address H&gt;, &lt;Address M&gt;, &lt;Address L&gt;, &lt;Data&gt;...


For instance:

0x02, 0x01, 0x86, 0xA0, 0x69


You send the "WRITE" command, send the three bytes of the address you want to write to, then follow that with the data to write. Or you send the READ command, send the three bytes of the address you want to read from, then the data is returned to you a byte at a time.