Вы определяете 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();
Красота дополнения two состоит в том, что на двоичном уровне это - вопрос интерпретации, а не алгоритма - аппаратные средства для добавления, что два числа со знаком совпадают с для неподписанных чисел (игнорирующий флаговые биты).
Ваш первый пример - "просто добавляет их" - точно правильный ответ. Ваши числа в качестве примера
Так, корректный ответ действительно-13.
Вычитание все равно, в той никакой специальной обработке требуется для дополнительных чисел two: Вы "просто вычитаете их".
Обратите внимание, что то, где вещи становятся интересными, является обработкой битов переполнения/потери значимости. Вы не можете представить результат 73 - (-86) как дополнительное число 8-разрядного two...
Добавление в дополнении two не требует никакой специальной обработки, когда знаки этих двух аргументов противоположны. Вы просто добавляете их, как Вы обычно были бы в двоичном файле, и знак результата является знаком, который Вы сохраняете.
И только удостовериться Вы понимаете дополнение two, для преобразования от положительного до отрицательного числа (или наоборот): инвертируйте каждый бит, затем добавьте 1 к результату.
Например, Ваше положительное число X = 01001001 становится 10110101+1=10110110 как отрицательное число; Ваше отрицательное число Y = 10101010 становится 01010101+1=01010110 как положительным числом.
Для вычитания Y от X инвертируйте Y и добавьте. Т.Е. 01001001 + 01010110.
Ваш беспорядок мог бы быть из-за ширин включенных чисел. Для получения лучшего ощущения этого, Вы могли попытаться создать целое число со знаком из своего целого числа без знака.
Если 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
Теперь у Вас есть два числа со знаком, что можно добавить или вычесть способ, которым Вы уже знаете.