Текущий архив: 2009.09.06;
Скачать: CL | DM;
Вниз
Как представить число в виде трех float чисел. Найти похожие ветки
← →
@!!ex © (2009-07-06 10:24) [0]Есть некоторое число N в пределах от 0 до 8388608.
Есть три float f1,f2,f3 разрядность у них 8 бит.
Нужно как-то сохранить число N в этих трех числах.
Вроде простая задча только у меня не получается...f1 := round(N/32768.0)/256.0;
f2 := round((N-f1*32768.0)/128.0)/256.0;
f3 := (N-f1*32768.0-f2*128.0)/256.0;
Получается бред.
P.S.
Битовых операций нет. f1,f2,f3 могут принимать значение от 0 до 1.
← →
@!!ex © (2009-07-06 10:27) [1]P.P.S.
По поводу магических чисел в коде:
128 - потому что предполагается хранить в f3 двойную точность.
256 - потому что 8 бит, значит 256 значений.
32768 - это 256(f2 с одинарной точностью)*128(f3 с двойной точностью)
← →
icWasya © (2009-07-06 10:33) [2]Что такое 8-битовый Float?
Откуда такая задача?
Попробуй вместо round использовать trunc.
← →
Dennis I. Komarov © (2009-07-06 10:33) [3]??? Я ничего не понял... Сформулируй еще раз... ;)
← →
@!!ex © (2009-07-06 10:36) [4]> [2] icWasya © (06.07.09 10:33)
> Что такое 8-битовый Float?
Число с плавающей точкой хранящаеся в 8 битах.
> [2] icWasya © (06.07.09 10:33)
> Откуда такая задача?
нужно в 8 битной текстуре сохранить позицию фрагмента в RGB каналах.
> [2] icWasya © (06.07.09 10:33)
> Попробуй вместо round использовать trunc.
Я вообще floor использую. Сам лагоритм явно неверен.
> [3] Dennis I. Komarov © (06.07.09 10:33)
Нужно сохранить число N в трех отдельных числах, а потом из этих трех чисел получиьт число максимально близкое к N
← →
sniknik © (2009-07-06 11:00) [5]> Есть некоторое число N в пределах от 0 до 8388608.
> Есть три float f1,f2,f3 разрядность у них 8 бит.
представить число до 8388608 можно в 3 байтах ровно.
т.е. 3 флоата будут заняты полностью и не в форме чисел с плавающей запятой а как целочисленные. под значения их самих
> f1,f2,f3 могут принимать значение от 0 до 1.
и под признаки "дробности" места не остается.
← →
@!!ex © (2009-07-06 11:04) [6]> [5] sniknik © (06.07.09 11:00)
дробность и не нужна.
Вы не правильно поняли.
> f1,f2,f3 могут принимать значение от 0 до 1.
Это не значит что в этих числах хранится что-то.
Это значит, что эти числа могут принимать только значения от 0 до 1. Тоесть в них НЕЛЬЗЯ сохранить 2 или 5 или 100.
← →
Anatoly Podgoretsky © (2009-07-06 11:08) [7]> @!!ex (06.07.2009 10:24:00) [0]
Никак, поскольку имеется всего 24 бита, а мантиса, даже не разделеная тоже 24 бита, поэтому места для трех экспонент просто нет.
← →
@!!ex © (2009-07-06 11:12) [8]> [7] Anatoly Podgoretsky © (06.07.09 11:08)
понятно. А если Т - целое?
← →
@!!ex © (2009-07-06 11:12) [9]понятно. А если N - целое?
← →
sniknik © (2009-07-06 11:19) [10]> Вы не правильно поняли.
я правильно понял. это ты не знаешь как устроено вещественное число.
> А если Т/N - целое?
да все равно, для хранения 3х байтового числа, нужны 3 байта, целиком, даже если извращенно разделяешь его на 3 отдельных...
в целом - минус место под признаки "дробности", но для оригинальных значений места все одно не остается.
← →
Leonid Troyanovsky © (2009-07-06 11:19) [11]
> @!!ex © (06.07.09 11:12) [9]
> понятно. А если N - целое?
N - мало, надо, по-крайней мере, M.
Можешь считать, что в каждом байте у тебя хранитcя дробь: B[i] / 255.
--
Regards, LVT.
← →
@!!ex © (2009-07-06 11:21) [12]Да без разницы как оно хранится.
Доступа к его представлению НЕТ.
Это математическая задача, а не технологическая.
← →
sniknik © (2009-07-06 11:23) [13]хотя, для палитры точность до единицы не существенна, и если на нее "забить" то целочисленные вполне подойдут.
← →
Anatoly Podgoretsky © (2009-07-06 11:41) [14]Математически у тебя для хранения в лучшем случае остается 6, максимум 7 бит, иначе число не Float
← →
@!!ex © (2009-07-06 11:45) [15]> [14] Anatoly Podgoretsky © (06.07.09 11:41)
Я еще раз прошу ЗАБЫТЬ о техническом представлении числа.
Я понятия не имею как оно хранится.
Я знаю что оно хрнаится в 8 битах, и знаю что оно может принимать значение от 0 до 1.
ВСЕ.
Забудьте вы о представлении.
Мне математическое решение надо, не основанное на технологиях.
← →
Anatoly Podgoretsky © (2009-07-06 11:50) [16]> @!!ex (06.07.2009 11:45:15) [15]
Физическое представление не нужно, есть мантиса и экспонента - этого достаточно.
← →
@!!ex © (2009-07-06 11:52) [17]> [16] Anatoly Podgoretsky © (06.07.09 11:50)
Мантисы и экспоненты может и не быть.
Я НЕ ЗНАЮ как работает видео процессор с цветовыми каналами текстуры.
Это может быть число с фикисрованной точкой, с плавающей. Или как то по другому представленное.
Я знаю две вещи:
1) на число выделяется 8 бит
2) Число может принимать значение от 0 до 1.
← →
@!!ex © (2009-07-06 11:53) [18]Скорее всего, кстати. Там иенно число с фиксированной точкой.
Потому что работаем всегда с дробной частью.
← →
sniknik © (2009-07-06 12:03) [19]> Забудьте вы о представлении.
> Мне математическое решение надо, не основанное на технологиях.
ага, неважно что в бутылку бочка вина не влезет, вы покажите мне как это делается. забудьте про бутылку....
> Потому что работаем всегда с дробной частью.
а оригинальное значение значит "принимает значение от 0 до 1"... отсюда следует, что биты используются полностью, т.к. возможны значения 0.5 например.
т.е. у тебя бутылка уже заполнена.
← →
@!!ex © (2009-07-06 12:11) [20]> [19] sniknik © (06.07.09 12:03)
Звиздец.....
эти числа не определены!!!!!!!!!!
Это просто переменные. У них НЕТ значений.
Но когд аих испольузем надо помнить, что они могут быть только в пределах от 0 до 1.
← →
@!!ex © (2009-07-06 12:11) [21]Неужели я так плохо по русски пишу?
← →
Anatoly Podgoretsky © (2009-07-06 12:14) [22]> @!!ex (06.07.2009 11:52:17) [17]
У флоат есть в обязательном порядке, хотя бы один бит, а уж утверждение про мантису совсем смешное, число без числа.
← →
Anatoly Podgoretsky © (2009-07-06 12:16) [23]> @!!ex (06.07.2009 12:11:20) [20]
Это норма для флоат, все числа в этом диапазоне + порядок
← →
Anatoly Podgoretsky © (2009-07-06 12:17) [24]> @!!ex (06.07.2009 12:11:21) [21]
У тебя не с русским проблемма!
← →
sniknik © (2009-07-06 12:19) [25]> Это просто переменные. У них НЕТ значений.
тебе говорят про место под значение, а значения приводятся для примера. отвлеченно просто про место (см. [5]) ты не понял.
← →
amir (2009-07-06 12:22) [26]>@!!ex © (06.07.09 11:45) [15]
>Я понятия не имею как оно хранится.
@!!ex © (06.07.09 11:52) [17]
>Я НЕ ЗНАЮ как работает видео процессор с цветовыми каналами текстуры.
Т.е. ты не имеешь ни малейшего представления о проблемном предмете, ни в какую не желаешь это представление поиметь, на задачу решить пытаешься ?
← →
sniknik © (2009-07-06 12:24) [27]давай по другому, давай ты ответишь ->
упростим, есть 1 бит, в нем возможны (передаются) значения 0-1. предложи математический аппарат для хранения в этом бите еще значения тех же - 0-1 (не буду наглеть как ты превышая вместимость на порядки, дам только равную).
ну ???
← →
@!!ex © (2009-07-06 12:33) [28]> [26] amir (06.07.09 12:22)
Да мне плевать на техническое представление. это МАТЕМАТИЧЕСКАЯ задача, а не техническая.
> [27] sniknik © (06.07.09 12:24)
если бит равен 0, то число 0, если 1 - то число 1. В чем проблема?
← →
Leonid Troyanovsky © (2009-07-06 12:37) [29]
> @!!ex © (06.07.09 12:33) [28]
> Да мне плевать на техническое представление. это МАТЕМАТИЧЕСКАЯ
У тебя туманное представление о браке, тебя кто-то обманул.
--
Regards, LVT.
← →
sniknik © (2009-07-06 12:39) [30]> если бит равен 0, то число 0, если 1 - то число 1. В чем проблема?
а где второе число?
твоя проблема. это же тебе нужно в месде для одного числа держать 2.
> Да мне плевать на техническое представление. это МАТЕМАТИЧЕСКАЯ задача, а не техническая.
тогда зачем приводишь технические ограничения? давай тогда примем, что f1,f2,f3 это флоат с разрядностью в 16 бит, и значением только в 0 или 1. (а не от 0 до 1)?
и легко решим ее математически...
← →
sniknik © (2009-07-06 12:41) [31]> а где второе число?
вернее - где математическое решение позволяющее там держать второе число?
← →
@!!ex © (2009-07-06 12:46) [32]> [31] sniknik © (06.07.09 12:41)
Я раза три повторил что НЕТ никакого второго числа.
← →
Anatoly Podgoretsky © (2009-07-06 12:51) [33]> sniknik (06.07.2009 12:41:31) [31]
Нужно N однобитных float
← →
sniknik © (2009-07-06 12:55) [34]> Я раза три повторил что НЕТ никакого второго числа.
@!!ex © (06.07.09 10:24)
> Есть некоторое число N в пределах от 0 до 8388608.
число номер раз.
> Есть три float f1,f2,f3 разрядность у них 8 бит.
> f1,f2,f3 могут принимать значение от 0 до 1.
число номер 2.
разбито на 3, это просто чтобы запутать, упрощая можно взять только одно f со значением от 0 до 1 (т.е. 0.0001, 0.0002 и т.д.), и пытатся сохранить в него третью часть от N (часть в битах, т.к. разговор о вместимости а не порядках), т.е. значение 255.
ну во всяком случае именно так я понял фразу
> Нужно как-то сохранить число N в этих трех числах.
если это не так, попытайся еще раз. трех раз НЕТ видимо мало.
← →
sniknik © (2009-07-06 12:58) [35]> Нужно N однобитных float
смешно. но только вносит путаницу... (а вдруг кто поверит в существование однобитного float-а? а тут судя по всему вера в чудеса очень сильна...)
← →
@!!ex © (2009-07-06 15:11) [36]Вот решение.
В одну сторону
N:=N/256*2;
f3:=frac(N);
z:=round(N)/256;
f2:=frac(N);
f1:=round(N)/256;
В другую
N:=(f1*256*256*256+f2*256*256+f3*256)/2;
40 постов разговоров ни о чем. Такое ощущение, что здесь реально народ собирается чисто поговорить ни о чем.
← →
Anatoly Podgoretsky © (2009-07-06 15:54) [37]Так у нас не обсуждают, с нападками на участников.
Страницы: 1 вся ветка
Текущий архив: 2009.09.06;
Скачать: CL | DM;
Память: 0.56 MB
Время: 0.02 c