Форум программистов, компьютерный форум CyberForum.ru

Быстрый подсчет количества бит - 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; //PF_INET-протокол семейства интернет //SOCK_STREAM-надежный потоковый сокет
в последней строке файла записаны два слова, переписать в выходной файл лишь те строки в которых есть хотя бы одно из этих слов 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
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,653
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 самая быстрая но где столько памяти взять
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru