2014-09-23 1 views
1

Работа над заданием, которое просит переписать все основные арифметические операции (добавить/вычесть/размножить) только с использованием бит-мудших операторов. Один из неполных методов имеет следующее описание: «возвращает целое число, двоичное представление которого совпадает с двоичным представлением i в обратном порядке». Я успешно переписал функции add(), subtract() и multiply, но мне нужны предложения как как это сделать. На данный момент это все, что у меня есть ..Нужно вернуть целое число, двоичное представление которого совпадает с двоичным представлением i в обратном порядке.

unsigned int reverse(unsigned int i) 
{ 
    { 
     int reverse; 
     while (i != 0) 
     { 
      reverse = reverse * 10; 
      reverse = reverse + i%10; 
      i = i/10; 
     } 
     return i; 
    } 
} 
+0

Почему «я» как неподписанный и «обратный», как подписан? Также вы возвращаете 'i'; вы не хотите возвращать 'reverse'? – MicroVirus

+1

Если вы должны работать с двоичным представлением, вам не следует умножать и делить на 10 (что было бы для десятичного представления). – interjay

+0

Возможно, это ваш ответ: http://stackoverflow.com/questions/845772/how-to-check-if-the-binary-representation-of-an-integer-is-a-palindrome – Alexxx

ответ

1

Если вы хотите, чтобы построить новый двоичный представление, вы должны использовать бинарные операции:

  • Использование << умножить на 2
  • Использовать & 1 для определения значения наименее значимого бита
  • Использовать побитовое ИЛИ | вместо добавления для установки le аст значащий бит
  • Использование >> разделить на 2

После того, как вы переписать код с этими изменениями, вы бы получить ожидаемые результаты.

+0

мы не должны делать домашнюю работу других народов .... и у него только репутация 3, так что это еще более бессмысленно (так сказать). – AnthonyLambert

+0

, и они даже не могут быть обеспокоены поиском ответов, данных в последний раз, когда была выполнена домашняя работа? Чья домашняя работа? Некоторые Uni? – AnthonyLambert

+0

@ AnthonyLambert Дающие подсказки в порядке. Он пишет код других людей, это не нормально. Я думаю, что ОП достаточно близко. Как только он поймет, что не так с его кодом, он должен уметь исправить это, используя эти подсказки. Я не думаю, что в этом что-то не так: я не понимал, что смещение имеет какое-либо отношение к умножению или делению на 2, и мне потребовалось несколько минут, чтобы убедить себя, что это происходит после того, как кто-то указал на это меня. – dasblinkenlight

Смежные вопросы