The best way is still to type the character on your keyboard. Thanks to XKB, you can bind arbitrary Unicode characters to key combinations. For instance, with user XKB customization, I can type directly: ← → ↑ ↓ … € ½ « » — − ± ≠ ∩ ∪ ⊂ ∧ ∨ ∀ ∃ √ ∞ ≤ ≥, etc.
Note: in the particular case of GNU Emacs, Unicode composition can be done via Ctrlx+8+Return. See Ctrlx+8+Ctrlh for additional methods.
"Unicode input" on Wikipedia gives information about ISO 14755 Unicode input depending on the context, in particular for X11 with some toolkits and for specific applications (Emacs, Opera, Vim).
Alternatively, you can use the Compose key with user-defined settings (as the default settings are far from being complete). Documentation is provided by the Compose(5) man page. For instance, write a file $HOME/.XCompose containing:
include "%L"
<Multi_key> <bracketleft> <c> : "⌈" U2308 # LEFT CEILING
<Multi_key> <bracketright> <c> : "⌉" U2309 # RIGHT CEILING
<Multi_key> <bracketleft> <f> : "⌊" U230A # LEFT FLOOR
<Multi_key> <bracketright> <f> : "⌋" U230B # RIGHT FLOOR
The include "%L" line first loads the default (locale-specific) Compose file, and the next four lines add user-defined settings, such as: Compose+[+c gives the left-ceiling character "⌈" (U+2308).