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

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

Войти
Регистрация
Восстановить пароль
 
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
#1

побитывая операция и массив - C++

06.07.2010, 14:14. Просмотров 425. Ответов 9
Метки нет (Все метки)

подскажите как массив чисел перевести в массив единиц и нулей с помощью побитовых операций
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2010, 14:14     побитывая операция и массив
Посмотрите здесь:

операция <<::>> - C++
имею код char Car::*Get_Marka(){ return marka ; } char Car::*Get_Color() { return color ; } bool Car::Get_Rastamojena() { return...

Операция присваивания (=) - C++
Добрый день, интересует вот что: правильно ли я считаю, что в int x = .0 + 1F + 4L; 1) Сперва все операнды сложения (по правую...

Операция с указателями - C++
SomeClass* ptr = sc1; SomeClass* ptr2 = ptr1; как имея только ptr2 изменить указатель ptr (изменить переменную, на которую ссылается ptr)...

Операция new с размещением - C++
проблема:Во второй элемент структуры данные не передаются, почему? Стоит отметить, что, если использовать просто new без размещения, то все...

Операция присваивания - C++
Чем отличается операция присваивания &quot;/=&quot; от &quot;=&quot; ?

Операция ИЛИ - C++
Добрый вечер) Я новичок в СИ поэтому если вопрос глупый не пинайте) Возможно ли сделать подобную операцию в СИ: IF (a == 3 ИЛИ 4) {...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.07.2010, 15:03     побитывая операция и массив #2
Если имеется в виду массив единиц и нулей, то так можно сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
///////////////////////////////////////////////////////////////////////////////////////
//  Как массив чисел перевести в массив единиц и нулей с помощью побитовых операций.
///////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
 
unsigned get_num_from_array(unsigned* arr, size_t  arr_size)
{   
    unsigned  res_num = 0;    
    while(arr_size--)
    {        
        (res_num <<= 1) |= *arr++;
    }
    return  res_num;
}
 
int main()
{
    unsigned a[] = {1, 0, 0, 1};
    std::cout << get_num_from_array(a, sizeof(a) / sizeof(a[0]))
              << std::endl;
    return 0;
}
suv121
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
06.07.2010, 15:08  [ТС]     побитывая операция и массив #3
а можно на стандартном си
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.07.2010, 15:20     побитывая операция и массив #4
Сразу даже не врубился, что ж тут нестандартное. Стандартнее этого уже не бывает:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
///////////////////////////////////////////////////////////////////////////////////////
//  Как массив чисел перевести в массив единиц и нулей с помощью побитовых операций.
///////////////////////////////////////////////////////////////////////////////////////
#include <cstdio>
 
unsigned get_num_from_array(unsigned* arr, size_t  arr_size)
{   
    unsigned  res_num = 0;    
    while(arr_size--)
    {        
        (res_num <<= 1) |= *arr++;
    }
    return  res_num;
}
 
int main()
{
    unsigned a[] = {1, 0, 0, 1};
    printf("%u\n", get_num_from_array(a, sizeof(a) / sizeof(a[0])));
    return 0;
}
PointsEqual
06.07.2010, 15:23
  #5

Не по теме:

Цитата Сообщение от Mr.X Посмотреть сообщение
Стандартнее этого уже не бывает:
....

easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
06.07.2010, 15:32     побитывая операция и массив #6
Цитата Сообщение от Mr.X Посмотреть сообщение
Стандартнее этого уже не бывает:
ещё как бывает!
Цитата Сообщение от Mr.X Посмотреть сообщение
#include <cstdio>
нет в стандартном С cstdio, за то есть stdio.h
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.07.2010, 15:43     побитывая операция и массив #7
Цитата Сообщение от easybudda Посмотреть сообщение
ещё как бывает!

нет в стандартном С cstdio, за то есть stdio.h
Честно говоря, уже давно меня мучает вопрос: откуда так много изучающих чистый C, и для чего они это делают?
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.07.2010, 05:16     побитывая операция и массив #8
почитай что-нибудь по C, который существует сам по себе

знаешь что такое long long n; ?
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
07.07.2010, 21:37     побитывая операция и массив #9
long long не нужен
нужен int64_t
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2010, 01:39     побитывая операция и массив
Еще ссылки по теме:

Атомарная операция - C++
У меня есть такой класс: class CClass { public: bool state() const {return state_;} private: bool state_ = false; ...

операция сдвига - C++
Объясните пожалуйста как именно работает и для чего нужна операция сдвига влево, в выражении например: N = 10; r = 1 &lt;&lt; N; И если...

Условная операция - C++
Здравствуйте. Задачка из Лафоре. Решил немного поизвращаться и сделать калькулятор фунтов, шиллингов и пенсов. Вот только в условной...

арифметическая операция - C++
помогите написать функцию арифметической операции с дробными чмслами и если дробь сокрашается,сократить... За ранее спасиба....


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.07.2010, 01:39     побитывая операция и массив #10
long long не ограничен 64мя битами

Добавлено через 5 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
 
#include <stdio.h>
 
int main(void)
{
    int *p = (int []) { 1, 2, 3 };
    
    for (int i = 0; i < 3; i++)
        printf("%d" "\n", p[i]);
    
    return 0;
}
а такое ты видал ?
Yandex
Объявления
08.07.2010, 01:39     побитывая операция и массив
Ответ Создать тему
Опции темы

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