Загрузка целого числа из меньшего типа не сохраняет биты, которых меньший тип не имел;они очищаются (или устанавливаются расширением знака для подписанных типов).
Итак:
int x = 0xfeefd00d;
x = (char) 1;
оставляет значение 1
в виде целого числа в x
, не 0xfeedf001
.