У меня проблемы с побитовой манипуляцией.Гнездо наиболее значимого куска
Для: шестнадцатеричное значение наиболее значимых клев х равно у (предположим, что 0 = < < у = 15)
Ограничения: тесты не могут использовать равенство (==) или неравенства (! =) , операторы относительного сравнения, деление, модуль и умножение, условные обозначения.
Проблема: мне нужно сделать свою функцию так, чтобы при msb = y она возвращала 1, а если это не правда 0. Однако я продолжаю получать нуль, даже когда я запускаю его с помощью 0xff. Если бы кто-то мог указать мне в правильном направлении, это было бы здорово. Спасибо.
int sig_nib(int x, int y){
int shifright = x >> 27;
int result = shifright & y;
return (result^y);
}
Самый значительный nibble int содержит бит знака, вы уверены, что его сравнить с y? –
Да, пример будет 0xABCDEF01, где y = C, поэтому false, потому что это не msn. Хотя y = A будет истинным, так как это то же самое, что и msn. Поэтому по существу я хочу сравнить 4 бита y и 4 бита msn, чтобы определить, являются ли они одинаковыми. Ну, вот как я считаю, что в любом случае нужно подходить. – Rbutler93