Bytes OR-ing em c # dá int [duplicado]

Esta questão já tem uma resposta aqui:

Left bit shifting 255 (como um byte) 7 respostas

Eu tenho esse código.

byte dup = 0;
Encoding.ASCII.GetString(new byte[] { (0x80 | dup) });

Quando tento compilar, recebo:

Não é possível converter implicitamente o tipo 'int' para 'byte'. Existe uma conversão explícita (você está perdendo um elenco?)

Por que isso acontece? Não deve | dois bytes dão um byte? Ambos os trabalhos a seguir, assegurando que cada item seja um byte.

Encoding.ASCII.GetString(new byte[] { (dup) });
Encoding.ASCII.GetString(new byte[] { (0x80) });

questionAnswers(3)

yourAnswerToTheQuestion