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

Наибольшая целая степень двойки, не превосходящая заданного числа n - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Переменные в c++ http://www.cyberforum.ru/cpp-beginners/thread778951.html
Помогите разобраться в теории. Так вот допустим мы создаем переменную в стеке int a; тогда в стеке где то по адресу скажем 004 выделяется 4 байта в которые записывается переменная в двоичном коде. Фррр а вот теперь вопрос а где храниться сам адрес 004 , откуда программа знает что переменная храниться в этом адресе? она что где то его сохраняет ?а если мы где то храним адрес то как мы узнаем...
C++ Написать рекурсивную процедуру перевода числа из десятичной системы в N –ю (2<= N <= 16) Написать рекурсивную процедуру перевода числа из десятичной системы в N –ю (2<= N <= 16) с циклами всё сделать гораздо проще, но вот задание такое, а рекурсию чёт я не особо втыкаю( http://www.cyberforum.ru/cpp-beginners/thread778948.html
C++ Дано предложение. Вывести все буквы м и н в нем
Дано предложение. Вывести все буквы м и н в нем. с помощью функций. С++
C++ Нахождение слова, по заданной букве
Дано предложение. Найти какое-нибудь слово, начинающееся на букву "к". С++
C++ Символы стоящие на чётных местах,заменить на букву Ы http://www.cyberforum.ru/cpp-beginners/thread778905.html
Дано предложение.Все его символы стоящие на чётных местах,заменить на букву Ы. Через С++
C++ Дайте, пожалуйста, контрпримеры Задача №93 в acmp задание в тему подробнее

Показать сообщение отдельно
Asker
114 / 102 / 11
Регистрация: 18.12.2010
Сообщений: 378
04.02.2013, 22:27  [ТС]     Наибольшая целая степень двойки, не превосходящая заданного числа n
Это подойдет?

Добавлено через 25 минут
Люди, я провел эксперимент. Я перебрал все числа от 2 до 1000000 и искал требуемую степень двойки, используя сначала первый способ, затем второй

Я запустил на Visual C++ сначала этот код:
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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main()
{
clock_t time;
time = clock();
int n;
 
int t=1;
 
for (int i=2; i<1000000; i++)
{
n=i;
t=1;
while (t<n) t<<=1;
cout << (t>>=1) << endl;
}
 
time = clock() - time;
cout << ((double)time/CLOCKS_PER_SEC); 
system("pause");
return 0;
}
В конце мне прога выдала результат: 114.782

Потом я запустил этот код:

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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main()
{
clock_t time;
time = clock();
int n;
 
unsigned int rv;
 
for (int i=2; i<1000000; i++)
{
n=i;
rv=0;
while (n) rv |= n >>= 1;
cout << ++rv << endl;
}
 
time = clock() - time;
cout << ((double)time/CLOCKS_PER_SEC); 
system("pause");
return 0;
}
И мне прога выдала результат: 123.422

Значит ли это, что первый способ был быстрее? о.О

ЗЫ. В посту #12 я ошибся, сдвигая на 2 разряда, а не на 1. при эксперименте я это исправил. Во время эксперимента выгрузил из винды посторонние проги и даже мышой не шевелил для чистоты эксперимента
 
Текущее время: 00:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru