Портирование кода с C ++ на Java с побитовыми операторами и беззнаковым int

Мне нужно перевести код C ++ на Java. У меня есть две проблемы, о которых я беспокоюсь.

1) Перевод «unsigned int» из C ++ в Java как «long».
Я решил использовать долго, чтобы увеличить емкость.

2) Использование побитовых операторов, в частности | а также <<, При условии
Я перевел бы неподписанные значения int в long, это бы
какой плохой эффект для этих операторов? Например, в C ++:

unsigned int a;
unsigned int b;
unsigned int c;

a | (b<<c)

это нормально делать это в Java:

long a, b, c;

a | (b<<c)

Пожалуйста, дайте мне знать о любых проблемах, с которыми вы можете столкнуться
делать эти вещи.

Спасибо

2

Решение

Я считаю, что то, что вы делаете, безопасно и должно хорошо работать на Java. Битовые операции, используемые, как вы показываете, должны работать как положено.

1

Другие решения

Он должен работать. Помните, что Java long является 64-битным Единственная реальная разница в том, что целые числа Java подписаны.

Операторы должны вести себя так же, как и для unsigned:
+, -, ==, &, |, ^, <<

Это изменит поведение:
*, /, %, <

использование >>> вместо >> иметь неподписанное толкование /2**k (биты выдвинуты 0, а не MSB копии).

2

long подписано в Java.

Тип данных long — это 64-разрядное целое число со знаком в виде двоичного числа со знаком. Она имеет
минимальное значение -9,223,372,036,854,775,808 и максимальное значение
9,223,372,036,854,775,807 (включительно).

unsigned int из C ++ длинное слово (32-разрядная на 32-разрядной машине). Он имеет диапазон от 0 до 4 294 967 295.

2

       Bitwise operations

It's important to remember that the unsigned keyword affects
the interpretation, not the representation of a number. In other
words, in cases where we aren't interpreting a value arithmetically— so-called
bitwise operations such as AND, OR, XOR— it makes essentially no
difference whether a value is marked as "signed" or "unsigned"

.
Int без знака эквивалентно long в Java. Таким образом, это влияет на разницу.
Для получения дополнительной информации обратитесь Вот

1
По вопросам рекламы [email protected]