14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
||||||
1 | ||||||
Поместить четыре числа от 1 до 4 в один байт18.11.2014, 11:11. Показов 2553. Ответов 19
Метки нет (Все метки)
Здравствуйте, есть такое задание:
Есть 4 переменных типа int, каждой переменной присвоено цифра от 1 до 4.
0
|
18.11.2014, 11:11 | |
Ответы с готовыми решениями:
19
Даны положительные действительные числа a,b,c,d. Выяснить, можно ли один из прямоугольников целиком поместить внутри другого прямоугольника Функция: изменить старший байт числа на заданное значение, не изменяя младший байт Поместить в массив данные размером 16 байт Поместить 2 байта в стэк vs jmp в 8 байт |
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
|
18.11.2014, 11:20 [ТС] | 3 |
Dani, а как их потом разложить ?
0
|
18.11.2014, 11:35 | 4 | |||||
Можно в лоб так сделать:
1
|
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
|
18.11.2014, 11:40 [ТС] | 6 |
Спасибо
Добавлено через 2 минуты а возможно чтоб сумма была не больше 16 ?
0
|
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
|
18.11.2014, 11:48 [ТС] | 8 |
Dani, можно пример ? а то я что-то не очень понял как это сделать
0
|
18.11.2014, 11:53 | 9 | |||||
Можно и в один байт запаковать, но только распаковка не очень красивая:
2
|
18.11.2014, 11:54 | 10 |
Сообщение было отмечено tdo22 как решение
Решение
int sum = 125 * a + 25 * b + 5*c + d;
sum = -sum; ... sum = -sum; int d = sum % 5; sum /= 5; int c = sum % 5; sum /= 5; inc b = sum % 5; sum /= 5; int a = sum;
1
|
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
|
18.11.2014, 12:02 [ТС] | 11 |
Ilot, интересной метод, спасибо
0
|
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
|
18.11.2014, 12:21 [ТС] | 13 |
Ilot, ок, а какую максимальную сумму можно засунуть в один байт ?
я имею ввиду больше чем 256, пользуясь Вашим кодом ?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
18.11.2014, 12:28 | 14 |
Нет. У тебя 4 числа от 1 до 4 каждое, это соответствует четырёхзначному четвертичному числу, то есть всего имеем комбинаций, как ни минимизируй максимум суммы, меньше 255-ти не получишь.
0
|
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
|
18.11.2014, 12:30 [ТС] | 15 |
taras atavin, ясно, возможно я взял не тот подход к своей задаче.
А возможно впихнут в один байт число от 0 к 70 000 ? Знаю что глупо звучит, так как 1 байте это не более 256, но увидев код Ilot, стало интересно возможно ли такое ?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
18.11.2014, 12:40 | 18 |
Обсчитался. 255-ти
Добавлено через 1 минуту Впихнуть можно, но только покоцав до невосстановимого состояния. В частности число до 70 000 000 отлично хешируется даже в пол байта, но с таким количеством хеш-коллизий, что лучше этим не маяться.
0
|
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
|
|
18.11.2014, 12:49 [ТС] | 19 |
taras atavin, а если в байт засунуть, то реально будет его восстановить ?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
18.11.2014, 13:05 | 20 | |||||
Нет. Для восстановления надо кодировать без потерь той информации, которую собираешься восстанавливать, а в байт помещается лишь информация о 256-ти комбинациях. Или речь о 4-х числах от 1 до 4-х? Тогда да.
Добавлено через 2 минуты
1
|
18.11.2014, 13:05 | |
18.11.2014, 13:05 | |
Помогаю со студенческими работами здесь
20
Получить значения каждого из четырех байт (тип Byte), составляющих эти четыре поля записи Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. Четыре байта в один int Объединить четыре ик-пульта в один Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |