Diese Lib hat das schon implementiert:
https://github.com/kasperskaarhoj/MCP23017-Arduino-Library
Das wird genauso gemacht wie man es erwarten würde:
if (val) _GPIO |= 1 << pin;
else _GPIO &= ~(1 << pin);
Also wenn "val" 1 ist, dann verordern um das Bit zu setzen. Ansonsten mit dem Inversen verunden um es zu löschen