с точки зрения побитовых операций ... Может
Кто-нибудь, пожалуйста, укажите это мне? Также,
чтобы получить правильный знак (-1, 0 или 1)
данного целого числа я в настоящее время
используя
(a > 0) ? 1 : (a >> 32);
Армен Цирунян и Джон Скит ответили на ваш технический вопрос, я попытаюсь объяснить некоторые технические заблуждения, которые у вас, по-видимому, есть.
Первая ошибка заключается в том, что если у вас есть 32-разрядное целое число со знаком и вы пытаетесь сместить его на 32, вы пытаетесь посмотреть на 33-й бит, который в случае со знаком 2-го числа будет представлять собой бит переполнения. * * 1008
Вторая ошибка, когда у вас есть 32-битное двоичное значение со знаком. Последний бит будет либо единица, либо ноль. Существует только одно нулевое значение. Таким образом, ваше заявление о попытке выяснить, является ли знак (-1,0,1), ясно указывает на то, что вы не понимаете этот факт. Если бит со знаком равен 1, число будет отрицательным, если оно равно нулю, оно будет положительным. Структуры, которые обрабатывают число по большей части в .NET Framework, не знают о дополнении 2 и дополнении 1. Это, конечно, не означает, что вы не можете расширить эту функциональность или просто преобразовать целое число со знаком в число дополнения до 2 (честно, очень просто).
Я должен добавить, что есть только одно значение для нуля, когда у вас есть целое число со знаком. Я полагаю, что это была моя главная проблема с вашим заявлением «проверь знак», которое показывает неправильное представление о двоичных числах.
http://en.wikipedia.org/wiki/Signed_magnitude#Sign-and-magnitude