Предлагаю проверить книгу Элементы вычислительных систем . В процессе изучения книги вы создадите виртуальный компьютер, начиная с базовых логических элементов. К тому времени, как вы закончите с книгой, у вас будет рудиментарная операционная система, компилятор и т. Д.
Исходный код, который доступен онлайн, также реализует архитектуру компьютера поверх Java.
Различные операторы не объявляются для байта
- оба операнда повышаются до int
, и в результате получается int
. Например, добавление:
byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 + byte2; // Compilation error
Обратите внимание, что составные присваивания действительно работают:
byte1 += byte2;
Недавно был задан вопрос SO . Я согласен, что это особенно утомительно для побитовых операций, хотя результат всегда должен быть одного и того же размера, и это логически полностью допустимая операция.
В качестве обходного пути вы можете просто преобразовать результат обратно в байт:
byte byte3 = (byte) (byte1 & byte2);
Поскольку байтовые (и короткие) типы не реализуют эти операторы
См. Спецификацию: 4.1.5