Калькулятор посчитать блоки на дом калькулятор: Калькулятор для расчета количества блоков на дом
c — Самый быстрый способ подсчета количества блоков памяти
Задавать вопрос
спросил
Изменено 7 лет, 9 месяцев назад
Просмотрено 2к раз
У меня есть область памяти, которая разбита на блоки по 9 предустановленных0013 БЛОКРАЗМЕР Размер . Учитывая блок памяти, определенный его смещением OFFSET
в байтах и SIZE
в байтах, как эффективно вычислить количество блоков, содержащих этот блок памяти?
Например, пусть BLOCKSIZE=8
. Тогда блок памяти с OFFSET=0
и SIZE=16
займет 2 блока, а блок с OFFSET=4
и SIZE=16
займет 3 блока.
Я могу написать такую формулу (используя целочисленную арифметику в C):
количество блоков = (СМЕЩЕНИЕ + РАЗМЕР - 1) / РАЗМЕР БЛОКА - (СМЕЩЕНИЕ / РАЗМЕР БЛОКА) + 1;
Этот расчет потребует 2 деления и 4 сложения. Можем ли мы сделать лучше, при условии, что
BLOCKSIZE
является степенью 2 и OFFSET >= 0
и SIZE > 0
?
ОБНОВЛЕНИЕ: Я понимаю, что в этом случае деление можно заменить сдвигом.
- c
- управление памятью
3
Можем ли мы сделать лучше, при условии, что
BLOCKSIZE
является степенью числа 2 ?
Не думаю. Ваша (исправленная) формула в основном (индекс первого блока после фрагмента) — (индекс первого блока, содержащего любую часть фрагмента). Вы можете сформулировать это по-другому — скажем, как сумму базового количества блоков плюс поправку для определенных макетов, требующих одного дополнительного блока, — но это на самом деле увеличивает количество операций, необходимых на пару:
количество блоков = (РАЗМЕР + РАЗМЕР БЛОКА - 1) / РАЗМЕР БЛОКА + ((SIZE % BLOCKSIZE) + (СМЕЩЕНИЕ % BLOCKSIZE)) / BLOCKSIZE;
Я не вижу никакого способа выполнить (по крайней мере) два целочисленных деления (или эквивалентных битовых сдвигов), потому что любой подход к вычислению требует вычисления двух подсчетов блоков.
То, что BLOCKSIZE
является степенью двойки, может помочь вам выбрать более эффективные операции, но не поможет уменьшить номер операций требуется. Однако вы могли бы немного сократить количество операций, если бы могли полагаться на то, что SIZE
будет кратным BLOCKSIZE
. В этом случае вы можете сделать это:
numberOfBlocks = SIZE / BLOCKSIZE + (OFFSET % BLOCKSIZE)? 1 : 0;
В качестве альтернативы, если было бы достаточно вычислить верхнюю границу для количества покрытых блоков, вы могли бы сделать это:
numberOfBlocksBound = SIZE / BLOCKSIZE + 2;
или немного меньше во многих случаях, но дороже для вычислений:
numberOfBlocksBound = (SIZE + BLOCKSIZE - 1) / BLOCKSIZE + 1;
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Калькулятор питания McDonald’s: калории и многое другое
Найдите информацию о калориях, углеводах и пищевой ценности McDonald’s Расскажи о своих любимых продуктах с помощью калькулятора питания.
*Процент дневной нормы (DV) основан на диете в 2000 калорий
Важное примечание:
В McDonald’s мы уделяем большое внимание тому, чтобы предлагать нашим клиентам качественные и вкусные блюда каждый раз, когда они посещают наши рестораны. Мы понимаем, что каждый из наших клиентов имеет индивидуальные потребности и соображения при выборе места, где можно поесть или выпить вне дома, особенно клиенты с пищевой аллергией. В рамках наших обязательств перед вами мы предоставляем самую последнюю информацию об ингредиентах, доступную от наших поставщиков продуктов питания, для девяти наиболее распространенных аллергенов, определенных Управлением по контролю за продуктами и лекарствами США (яйца, молочные продукты, пшеница, соя, арахис, лесные орехи, рыба). , моллюски и кунжут), чтобы наши гости с пищевой аллергией могли сделать осознанный выбор блюд. Тем не менее, мы также хотим, чтобы вы знали, что, несмотря на принятие мер предосторожности, обычные кухонные операции могут включать в себя некоторые общие зоны приготовления и приготовления пищи, оборудование и посуду, и существует вероятность того, что ваши продукты питания вступят в контакт с другими продуктами питания, включая аллергены.
Процентные дневные значения (DV) и RDI основаны на неокругленных значениях.
**Процент дневной нормы (DV) основан на диете в 2000 калорий. Ваши ежедневные значения могут быть выше или ниже в зависимости от ваших потребностей в калориях.
Информация о питании на этом веб-сайте получена на основе испытаний, проведенных в аккредитованных лабораториях, опубликованных ресурсов или информации, предоставленной поставщиками McDonald’s. Информация о питании основана на стандартных составах продуктов и размерах порций. Калории для газированных напитков основаны на стандартном уровне наполнения плюс лед. Если вы пользуетесь фонтанчиком самообслуживания внутри ресторана для заказа напитков, см.

Важное примечание:
В McDonald’s мы уделяем большое внимание тому, чтобы предлагать нашим клиентам качественные и вкусные блюда каждый раз, когда они посещают наши рестораны. Мы понимаем, что каждый из наших клиентов имеет индивидуальные потребности и соображения при выборе места, где можно поесть или выпить вне дома, особенно клиенты с пищевой аллергией. В рамках наших обязательств перед вами мы предоставляем самую последнюю информацию об ингредиентах, доступную от наших поставщиков продуктов питания, для девяти наиболее распространенных аллергенов, определенных Управлением по контролю за продуктами и лекарствами США (яйца, молочные продукты, пшеница, соя, арахис, лесные орехи, рыба). , моллюски и кунжут), чтобы наши гости с пищевой аллергией могли сделать осознанный выбор блюд. Тем не менее, мы также хотим, чтобы вы знали, что, несмотря на принятие мер предосторожности, обычные кухонные операции могут включать в себя некоторые общие зоны приготовления и приготовления пищи, оборудование и посуду, и существует вероятность того, что ваши продукты питания вступят в контакт с другими продуктами питания, включая аллергены.