Таким образом у меня есть следующий номер шестигранного:Расширение шестнадцатеричного числа
0x55 which is 0101 0101
И мне нужно, чтобы распространить его на 0x55555555. Только ops, которые я могу использовать, следующие:
Legal ops: ! ~ &^| + << >>
Я немного запутался в том, как я должен это делать. Я знаю, что мы должны двигаться влево, хотя. Я уверен, что это простой вопрос, поэтому я прошу прощения, я просто не могу думать в этот момент больше ..
Ну, у вас есть 8 бит и необходимость сделать еще 3 копии. Один из способов состоит в том, чтобы сделать одну копию, чтобы получить 16-битное число, а затем сделать 2 копии этого, так что у вас есть 32. Чтобы скопировать, сдвиньте необходимое количество бит слева и «или» с оригиналом. 'unsigned x = 0x55; x | = x << 8; x | = x << 16; printf ("% x \ n", x); ' – Gene
Это имеет большой смысл! Спасибо @Gene – halapgos1
Если вам не разрешено использовать операторы присваивания, вам не удастся это сделать. – Lundin