In UTF-32, characters in the supplementary character range are encoded in bytes that correspond directly to the code point values. For example, U+10330 GOTHIC LETTER AHSA is stored as the byte sequence 00 01 03 30. In UTF-8, the character would also be represented using a 4-byte sequence, F0 90 8C B0.
UTF-16, however, wants to represent all characters using 16-bit (2 byte) 'code units', but you can't express 0x10330 (decimal 66,352) as a 16-bit value (the maximum is decimal 65,535). To get around this, UTF-16 uses instead two special, adjacent 1024-character ranges in Unicode referred to as high surrogates and low surrogates. The combination of a high surrogate followed by a low surrogate, when interpreted by the character encoding algorithm used for UTF-16, points to a specific character in a supplementary plane. For example, the Gothic AHSA is represented in UTF-16 as the byte sequence D8 00 DF 30, where D800 is the code point of a high surrogate, and DF30 is the code point of a low surrogate.
You should never encounter a single surrogate character – they should always appear as high+low surrogate pairs. Also, pairs should not be split when wrapping or highlighting text, counting characters, displaying unknown character glyphs, and so on. You should also never normally see surrogate character code points in UTF-8 or UTF-32.