Добавление отрицательного и положительного двоичного файла?

Вы определяете context как null в вашем OnClick обратном вызове:

Context context=null;

, поэтому он выбрасывает NullPointerException

Чтобы аннулировать это поведение, объявите переменную activityContext внутри класса MyViewHolder и присвойте переменную context как

public juiceAdapterGreens(Context context, List<Greens> juiceList) {
...
activityContext = context;
}

. Затем вы можете использовать

context.getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, dummyFragement,"OptionsFragment")
.addToBackStack(null).commit();
5
задан skaffman 30 June 2011 в 18:33
поделиться

4 ответа

Красота дополнения two состоит в том, что на двоичном уровне это - вопрос интерпретации, а не алгоритма - аппаратные средства для добавления, что два числа со знаком совпадают с для неподписанных чисел (игнорирующий флаговые биты).

Ваш первый пример - "просто добавляет их" - точно правильный ответ. Ваши числа в качестве примера

  • 01001001 = 73
  • 10101010 =-86

Так, корректный ответ действительно-13.

Вычитание все равно, в той никакой специальной обработке требуется для дополнительных чисел two: Вы "просто вычитаете их".

Обратите внимание, что то, где вещи становятся интересными, является обработкой битов переполнения/потери значимости. Вы не можете представить результат 73 - (-86) как дополнительное число 8-разрядного two...

12
ответ дан 18 December 2019 в 12:02
поделиться

Добавление в дополнении two не требует никакой специальной обработки, когда знаки этих двух аргументов противоположны. Вы просто добавляете их, как Вы обычно были бы в двоичном файле, и знак результата является знаком, который Вы сохраняете.

1
ответ дан 18 December 2019 в 12:02
поделиться

И только удостовериться Вы понимаете дополнение two, для преобразования от положительного до отрицательного числа (или наоборот): инвертируйте каждый бит, затем добавьте 1 к результату.

Например, Ваше положительное число X = 01001001 становится 10110101+1=10110110 как отрицательное число; Ваше отрицательное число Y = 10101010 становится 01010101+1=01010110 как положительным числом.

Для вычитания Y от X инвертируйте Y и добавьте. Т.Е. 01001001 + 01010110.

1
ответ дан 18 December 2019 в 12:02
поделиться

Ваш беспорядок мог бы быть из-за ширин включенных чисел. Для получения лучшего ощущения этого, Вы могли попытаться создать целое число со знаком из своего целого числа без знака.

Если MSB Вашего целого числа без знака уже 0, то можно считать его, как подписано и получить тот же результат.
Если MSB равняется 1 затем, можно добавить 0 налево для получения числа со знаком. Необходимо подписаться - расширяются (то есть, добавьте 0s, если MSB 0, добавьте 1 с, если MSB равняется 1), все числа со знаком для получения многой той же ширины, таким образом, можно делать арифметику "обычно".

Например, использование Ваших чисел:

X = 01001001: Неподписанный, MSB 0, ничего не сделайте.

Y = 10101010: Подписанный, ничего не сделал с X, все еще ничего не сделайте.

Но если мы изменяем MSB X к 1:

X = 11001001: Неподписанный, MSB равняется 1, Добавьте 0-> 011001001

Y = 10101010: Со знаком, расширенный X, так знак - расширяют Y-> 110101010

Теперь у Вас есть два числа со знаком, что можно добавить или вычесть способ, которым Вы уже знаете.

1
ответ дан 18 December 2019 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: