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

Быстрое преобразование числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ двоичный однорукий бандит http://www.cyberforum.ru/cpp-beginners/thread695592.html
Помогите составить программу получения статистики по N сериям игр с двоичным «одноруким бандитом» (действующем на основе равнораспределённой двоичной случайной величины) при использовании следующей неазартной стратегии: как только выигрыш превзойдёт проигрыш, очередная игра заканчивается.
C++ возрастание в функции void Shifr (FILE *f) { char sh; int n=0; struct TOVAR tz; while (fgets ((char *)&tz,sizeof(TOVAR),f)!=NULL) if (strncmp(tz.sh,DL_SH)==0) { if (n==0); { puts ("name kol-vo data"); http://www.cyberforum.ru/cpp-beginners/thread695587.html
C++ Задали написать, чтобы лампочки на клаве мигали в такт музыке (turbo c++)
задали написать программку на турбо си, чтобы лампочки на клаве (num,caps,scroll) мигали в такт музыке, которая пищит из бипера музыку я написал. помогите плиз с этими лампочками вот код программы с музыкой: <stdio.h> <conio.h> <dos.h>
Вывести цифры C++
Привет всем, у меня такая проблемка немогу никак написать код к етому заданию: нужно зделать консольную програму в которой пользователь вводит что либо и програма должна вывести все цифры. Знаю что нужно работать с String 'ами только немогу понять как ето все зделать в коде помогите плиз
C++ Слово break после default (надо или нет) http://www.cyberforum.ru/cpp-beginners/thread695580.html
Книга предлагает такую запись оператора switch: switch (выражение) { case значениеОдин: оператор; break; case значениеДва: оператор; break; ...... case значениеN: оператор; break;
C++ else if void Matrix::AddRight(int sub, int obj, int right) { if(right==READ && r.r==0) v+=right; else cout<<"Право чтения уже внесено\n"; if(right==WRITE && r.r==0) v+=right; else cout<<"Право записи уже внесено\n"; if(right==EXECUTE && r.r==0) v+=right; else cout<<"Право запуска уже внесено\n"; if(right==DELETE && r.r==0) v+=right; else cout<<"Право удаления уже внесено\n"; подробнее

Показать сообщение отдельно
The special one
13 / 13 / 0
Регистрация: 09.03.2012
Сообщений: 112
12.11.2012, 22:09  [ТС]     Быстрое преобразование числа
Спасибо друзья! Вот решил время засекать.
C++
1
2
3
4
5
6
7
unsigned __int64 st1 = GetCycleCount();//Засекаем время
int a = -5248;
for(int i=0;i<999;i++){
    if(a > 0)a = 1;
    if(a < 0)a = -1;
}
raz1 = GetCycleCount() - st1;//Количество тактов
raz1 = 3047
C++
1
2
3
4
5
6
unsigned __int64 st1 = GetCycleCount();//Засекаем время
int a = -5248;
for(int i=0;i<999;i++){
    if(a > 0){a = 1;}else{a = -1;}
}
raz1 = GetCycleCount() - st1;//Количество тактов
raz1 = 4519
C++
1
2
3
4
5
6
7
8
unsigned __int64 st1 = GetCycleCount();//Засекаем время
int a = -5248;
for(int i=0;i<999;i++){
    a = a/abs(a);
    a = ((a > 0) << 1) - 1;
    a = (a > 0) - (a < 0);
}
raz1 = GetCycleCount() - st1;//Количество тактов
raz1 = 35
C++
1
2
3
4
5
6
unsigned __int64 st1 = GetCycleCount();//Засекаем время
int a = -5248;
for(int i=0;i<999;i++){
    
}
raz1 = GetCycleCount() - st1;//Количество тактов
raz1 = 35

Способы
a = a/abs(a);
a = ((a > 0) << 1) - 1;
a = (a > 0) - (a < 0);
работают намного быстрее, чем ифы. Даже если элс ифы заменить ифами, то тоже можно повысить быстродействие, если я правильно время засекаю.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru