Member 13504736 Ответов: 4

Как мне решить этот логический вопрос ?


Итак у меня есть задание есть 8 цветов и мне нужно найти 9 й
это шестнадцатеричные коды для цветов
1) #AA0099 ? #009966 = #AA99FF
2) #339900 ? #990066 = #AA9966
3) #006699 ? #EF4321 = #??????
какие действия я должен сделать, чтобы получить последний цвет и почему ?

Что я уже пробовал:

Кажется, я не могу решить эту проблему, я пытался сложить их, но не смог этого сделать, не знаю, делаю ли я это неправильно или это совсем другое дело, Пожалуйста, помогите

4 Ответов

Рейтинг:
1

Kenneth Haugland

Может быть, вы можете просто перепроверить свои расчеты с помощью этого?
Преобразователь шестнадцатеричного числа в десятичное[^]


Рейтинг:
1

Patrice T

Вы должны преобразовать шестнадцатеричный код в двоичный

  #AA0099   1010 1010 0000 0000 1001 1001
? #009966   0000 0000 1001 1001 0110 0110
  =======   =============================
= #AA99FF   1010 1010 1001 1001 1111 1111

и выясните, какая операция используется. В этом примере или может поместиться, + тоже ...
Проделайте то же самое со вторым примером.


Рейтинг:
1

Graeme_Grant

Для меня это выглядит как простая математика. Я думаю, что ваш второй результат неверен.

Вот он в C#, так как ни один язык не был упомянут:

var col1 = new[] { 0xAA0099, 0x339900, 0x006699 };
var col2 = new[] { 0x009966, 0x990066, 0xEF4321 };

for (int i = 0; i < col1.Length; i++)
{
    Console.WriteLine($"{col1[i].ToString("X6")} + {col2[i].ToString("X6")} = {(col1[i] + col2[i]).ToString("X6")}");
}

Который выводит:
AA0099 + 009966 = AA99FF
339900 + 990066 = CC9966
006699 + EF4321 = EFA9BA

После разговора с ppolymorphe вы можете сделать следующее побитовое действие:
int[] col1 = new int[] { 0xAA0099, 0x339900, 0x006699 };
int[] col2 = new int[] { 0x009966, 0x990066, 0xEF4321 };

uint mask = (1 << 16) - 1;

for (int i = 0; i < col1.Length; i++)
{
    var answer = (col1[i] | col2[i]) & mask | 0xaa0000;
    Console.WriteLine($"{col1[i].ToString("X6")} ? {col2[i].ToString("X6")} = {answer.ToString("X6")}");
}

Который выводит:
AA0099 ? 009966 = AA99FF
339900 ? 990066 = AA9966
006699 ? EF4321 = AA67B9


Patrice T

Я боюсь, что это не простое дополнение, второй образец id неправильный.

Graeme_Grant

Немного контекста поможет. Я уже упоминал, что, по моему мнению, его 2-й пример дал неправильный результат. Но он может и не захотеть менять красный канал. Это RGB, HSL и т. д.?

Patrice T

Ладно, я не читал вашего решения
На самом деле второй образец верен, это просто не сложение; это еще одна побитовая операция.

Graeme_Grant

обновлено, чтобы дать те же ответы... ;)

Patrice T

Все еще неверно, ответ-это единственный оператор, который вы не использовали ^.

Graeme_Grant

ах... глупый я... один оператор, чтобы управлять ими всеми... Мне следовало бы прочитать его получше... спасибо, что поправил меня...

Patrice T

- один оператор, чтобы управлять ими всеми..."
Повелитель ксора ... :)

Рейтинг:
0

Marc Clifton

Вы должны просмотреть двоичные операторы "и", "или", "xor" и "не". Как только вы выясните, какой оператор применяется к первым двум ответам, легко понять, каков ответ на третью проблему.