С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Быстрый подсчет количества бит - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ задача сорт и поиск бульбашка http://www.cyberforum.ru/cpp-beginners/thread1020528.html
надо по сортировать числа 12 22 15 55 11 21 12 31 13 51 55 15 с помощью буль башки в отсортированном массиве после этова найти максимальное число и минимальное в массиве! также найти определенный...
C++ Написать программу с функцией, вычисляющей расстояние между двумя точками на плоскости Пожалуйста Помогите сделать лабу, нужно что-бы я сам задавал координаты точек на плоскости. http://www.cyberforum.ru/cpp-beginners/thread1020526.html
C++ Отправка письма на email
Здорова господа!!! Пишу щас программку которая должна отсылать письма на email, но ничего не получается. От что набрасал:#include <winsock.h> int main() { cout <<"Rabota c SOCETAMI"<<endl;...
в последней строке файла записаны два слова, переписать в выходной файл лишь те строки в которых есть хотя бы одно из этих слов C++
помогите пожалуйста с задачей: в последней строке файла записаны два слова, переписать в выходной файл лишь те строки в которых есть хотя бы одно из этих слов :help:
C++ приведение NULL к char http://www.cyberforum.ru/cpp-beginners/thread1020499.html
можно ли так писать, если getpwd(login) возвращает NULL? pwds = (char*) getpwd(login);
C++ Запись в массив объекты класса (vector) // oop_laba2_2cpp: определяет точку входа для консольного приложения. //Вариант 6 //Объект – директория. // //Включает в себя //массив //файлов (имя, расширение, размер). // //Методы –... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6729 / 5138 / 485
Регистрация: 14.02.2011
Сообщений: 17,254
27.11.2013, 16:49
Цитата Сообщение от stlex Посмотреть сообщение
Я про свой способ говорю, который в заглавном посте. Он самый быстрый
Цитата Сообщение от stlex Посмотреть сообщение
Все работает, но очень уж меделено для моей задачи
определись
ну могу показать табличный способ, он будет самый быстрый
правда памяти будет жрать
честно говоря я так и не понял твой способ он вроде табличный
но каждый раз вызывается вот это
Цитата Сообщение от stlex Посмотреть сообщение
InitMas( mas );
вот так нужно было делать
с массивом на 16 элементов массив забивается на этапе компиляции
C++
1
2
3
4
5
6
7
8
9
10
11
12
int arr[16]={0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4};
 
int fncSumm(unsigned int n)
{
int summ=0;
while(n)
{
summ+=arr[n&0x0F];
n/=16;
}
return summ;
}
тоже самое но таблица рассчитывается при запуске программы размер 256

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int arr[256];
void initArr()
{
  for(int i=0;i<256;i++)
   {
    int j=i;
    int summ=0;
    while(j)
    {
       summ+=n&jx01;
       j/=2;
    }
   arr[i]=summ;
  }
 
}
.........................
int fncSumm(unsigned int n)
{
int summ=0;
 while(n)
  {
   summ+=arr[n&0xFF];
   n/=256;
  }
 return summ;
}
тоже но размер таблицы больше лучше выделять динамически
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int * arr;
void initArr()
{
 arr=new[65536]
 for(int i=0;i<65536;i++)
   {
    int j=i;
    int summ=0;
    while(j)
    {
       summ+=n&jx01;
       j/=2;
    }
   arr[i]=summ;
  }
 
}
.........................
int fncSumm(unsigned int n)
{
int summ=0;
summ+=arr[n&0xFFFF];
summ+=arr[(n>>16)&0xFFFF];
 return summ;
}
как видишь чем больше размер массива(таблицы) тем шустрее вычисления
но расплата память
в идеале вообще таблица размером в 4294967296 самая быстрая но где столько памяти взять
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.