2015-01-16 1 views
-2

Я работаю над кодировщиком GIF в C# в качестве побочного эффекта для чего-то еще связанного с GIF, над которым я работал., если что-то есть 2^(N + 1), как я могу получить N от конечного результата?

В спецификации GIF в заголовке файла есть «Логический дескриптор экрана», один из которых является тем, насколько велика глобальная таблица цветов.

Из того, что я понимаю Глобальная Таблица цветов колеблется от 0-256, хранится в виде 3 бит в формате 2 (N + 1), где N представляет собой десятичное значение от 1 до 7.

I» m создавая функцию, где я могу указать размер таблицы как целое число между 0-256, а затем выполнить вычисление, чтобы найти N.

Например, 2 (7 + 1) = 256, как я могу вернуться к 7 из 256?

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

+0

Ваш вопрос на самом деле о математике, и, следовательно, это тема на этом сайте; перейдите по адресу http://math.stackexchange.com. – Jubobs

+0

Я собирался, но я не могу найти там тег, который применяется. –

ответ

1

Что вы ищете называется logarithm, в частности base 2, or binary logarithm. Википедия говорит:

Это обратная функция мощности двух функций. Двоичный логарифм n - это мощность, для которой необходимо увеличить число 2, чтобы получить значение n. То есть: enter image description here

В C#, вы можете вычислить его с помощью Math.Log.

1

Ответ найти, если а = 2 п + 1 то п = войти (а) - 1. Вот код Java:

public static void main (String[] args) throws java.lang.Exception 
{ 
    int n = 256; 
    double log = Math.log(n)/Math.log(2); 
    System.out.println(log-1); 
} 

Интернет version

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