سلام، این عملگرها مربوط به بیت ها هستن، Bitwise operations.
این عملگر ها معروفن به عملگر های boolean، همون "و"، "یا" و "نقیض" و ... در دبیرستان، الان & برابر با "و" و | برابر "یا" هست، حالا شما این x و y رو اگر به صورت binary(دودویی) بنویسی میشه اینجوری(البته حداقل یک بایت یعنی 8 بیتِ ولی 0 های دیگرو نگذاشتم) :
x = 0101
y = 0011
بعد اینارو بیت به بیت "و" و "یا" شون رو بگیر، میشه این:
x|y = 0111
x&y = 0001
حالا تبدیلشون کن به decimal(ده دهی) میشه همون که شما نوشتی.
کلا چون منطق کامپیوتر بر مبنای دودویی هست اینجور محاسبات در مواردی که نیاز به کار مستقیم روی حافظه باشه یا در سطوح پایین و مستقیم مربوط به سخت افزار باشه کاربرد داره. اینا در مدار منطقی و میکروها هم خیلی کاربردی هستن.