Я работаю над функцией, которая возвращает 1, когда x может быть представлена как n-бит, номер дополнения 2 и 0, если он не может. Прямо сейчас мой код работает для некоторых примеров вроде (5,3), (- 4,3). Но я не могу заставить его работать для случаев, когда n больше, чем x (2,6). Любые предложения относительно того, почему? Спасибо.проблема с использованием маски для управления битом
У меня есть ограничения, которые включают в себя литье, явные или неявные, операторы относительного сравнения (<,>, < =, и> =), деление, модуль и умножение, вычитание, условные выражения (if или? :) , циклы, операторы switch, вызовы функций и макросы. Пусть 1 < п < 32.
int problem2(int x, int n){
int temp = x;
uint32_t mask;
int maskco;
mask = 0xFFFFFFFF << n;
maskco = (mask | temp);
return (maskco) == x;
}
как делает ваш код работает для положительных чисел? –
Когда я печатаю hex для maskco и сравниваю его с шестнадцатеричным целым, результат такой же, поэтому я предполагаю, что он работает для некоторых. – Rbutler93
нет, он всегда делает старшие биты числа равными 1 с, поэтому он будет работать только для отрицательных чисел –