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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Catherine-
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 5
#1

Определить количество ведущих нулей старшего байта short int - C++

18.02.2013, 12:24. Просмотров 715. Ответов 5
Метки нет (Все метки)

Представить программу, позволяющую для заданного целочисленного объекта short int определить количество ведущих нулей старшего его байта
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 12:24     Определить количество ведущих нулей старшего байта short int
Посмотрите здесь:

C++ short vs int
C++ short int и short
C++ Программа, определяющая для заданного целочисленного объекта определить количество ведущих единиц старшего его байта
Для (short int) выполнить перестановку младшей и старшей тетрад его младшего байта C++
Определить количество ведущих единиц C++
программа,позволяющая для заданного целочисленного объекта (int) определить количество ведущих единиц младшей его тетрады C++
Преобразование 2-х char в один short int C++
C++ Определение младшего и старшего байта
C++ Функция нахождения старшего и младшего байта
Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах (Pascal -> С++) C++
C++ Размер указателя short int
Почему макс short int равен 65535? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
avfed
15 / 13 / 2
Регистрация: 24.01.2013
Сообщений: 23
18.02.2013, 13:08     Определить количество ведущих нулей старшего байта short int #2
для беззнакового по идее получится так, для знакового насколько я понимаю будут не ведущие 0, а 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
    unsigned short n;
    cout<<"Enter number: ";
    cin>>n;
    unsigned short tmp=n,k;
    int i=0;
    while (tmp)
    {
        tmp/=2;
        i++;
    }
    k=i>8?16-i:8;
    cout<<"Zeros = "<<k<<endl;
    return 0;
}
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
18.02.2013, 13:15     Определить количество ведущих нулей старшего байта short int #3
Имеет, к примеру, число 1356. В двоичной системе - 0000010101001100.
Берем старший байт: 00000101
Считаем количество нулей до единицы: 00000101
Получаем пять. Так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <bitset>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "");
    short int val=1356;
    bitset<16> bits(val);
    cout<<bits.to_string()<<endl;
    int null_count(0);
 
    for (size_t i = 15; i!=7; i--)
        if (!bits.test(i))
            null_count++;
        else break;
    cout<<"Ведущих нулевых битов старшего байта "<<null_count;
 
    return 0;
}
Catherine-
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 5
18.02.2013, 13:25  [ТС]     Определить количество ведущих нулей старшего байта short int #4
Oliver, a для любого числа?
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
18.02.2013, 13:31     Определить количество ведущих нулей старшего байта short int #5
Catherine-, меняете:
C++
1
2
    
short int val=1356;
или вводите с клавиатуры, как хотите.

Для long int, к примеру, будет так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <bitset>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "");
    long int val=5294967295;
    bitset<64> bits(val);
    cout<<bits.to_string()<<endl;
    int null_count(0);
 
    for (size_t i = 63; i!=55; i--)
        if (!bits.test(i))
            null_count++;
        else break;
    cout<<"Ведущих нулевых битов старшего байта "<<null_count;
 
    return 0;
}
Catherine-
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 5
25.02.2013, 13:05  [ТС]     Определить количество ведущих нулей старшего байта short int #6
скажите, а как решитоь ту же задачу но с помощью функций?
Yandex
Объявления
25.02.2013, 13:05     Определить количество ведущих нулей старшего байта short int
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru