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

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

Войти
Регистрация
Восстановить пароль
 
 
Bdavid008
20 / 20 / 0
Регистрация: 24.03.2014
Сообщений: 77
#1

Представление из бит в байт - C++

14.05.2014, 20:14. Просмотров 833. Ответов 24
Метки нет (Все метки)

Вообще такая беда как представить биты в то что они были сначала,вот так я представляю байт в битах с помощью маски,а как обратно не знаю
C++
1
2
3
4
5
6
7
 for (int i = 0; i < N; i++){
 
                    for (int j = 0, byte = buf[i]; j < 8; byte <<= 1, j++){
 
                        byte & 0x80 ? bit[k] = 1 : bit[k] = 0;
                        k++;
                    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 20:14     Представление из бит в байт
Посмотрите здесь:
C++ Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт
Порядок байт в слове и бит в байте C++
C++ Как сложить два float-а, имея их представление в виде массива байт?
Бит 8, младший и старший бит (по книге) C++
C++ функция изменяет старший байт числа на заданное значение не изменяя младший байт
Посчитать в файле количество нулевых байт и различных байт C++
Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bdavid008
20 / 20 / 0
Регистрация: 24.03.2014
Сообщений: 77
15.05.2014, 21:24  [ТС]     Представление из бит в байт #16
а если вам не сложно можете показать как что то я вообще запутался
C++
1
2
3
4
5
6
int bit[NUM];//собственно этот массив где храняться биты
                int k = 0;//счетчик по которому я добавляю элементы в массив bit
                for (int i = 0; i < N; i++){//внешний цикл по которому иду по массиву buf 
                    for (int j = 0, byte = buf[i]; j < 8; byte >>= 1, j++){//цикл из восьми элементов,дабы по истечению этого цикла идти к другой переменной массива buf
                        byte & 0x01 ? bit[k] = 1 : bit[k] = 0;//маска по которой я сравниваю
                    }
вот же я загоняю ,а как обратно не знаю
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
15.05.2014, 21:48     Представление из бит в байт #17
Цитата Сообщение от Bdavid008 Посмотреть сообщение
C++
1
2
3
4
int k = 0;//счетчик по которому я добавляю элементы в массив bit
                for (int i = 0; i < N; i++){//внешний цикл по которому иду по массиву buf 
                    for (int j = 0, byte = buf[i]; j < 8; byte >>= 1, j++){//цикл из восьми элементов,дабы по истечению этого цикла идти к другой переменной массива buf
                        byte & 0x01 ? bit[k] = 1 : bit[k] = 0;//маска по которой я сравниваю
где k меняется?

в результате все биты ты загоняешь в bit[0]
Bdavid008
20 / 20 / 0
Регистрация: 24.03.2014
Сообщений: 77
15.05.2014, 21:51  [ТС]     Представление из бит в байт #18
byte & 0x01 ? bit[k] = 1 : bit[k] = 0;//маска по которой я сравниваю
k++; я не вставил походу соррри мой косяк)не внимательность ,простите ,спасибо что обьясняете,просто я дес реалзую и поэтому биты нужны
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2014, 22:03     Представление из бит в байт #19
Смотрю я на все эти битоё... и понимаю, что std::bitset по вам плачет.
Bdavid008
20 / 20 / 0
Регистрация: 24.03.2014
Сообщений: 77
15.05.2014, 22:36  [ТС]     Представление из бит в байт #20
Понимаешь у меня препод любит оптимизацию )я тут и так с хитрил в массив интовский все загнал , а тут еще подключать библиотеку битсет)
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
15.05.2014, 22:42     Представление из бит в байт #21
Пусть тогда сам пишет на асме, раз такой оптимизатор твой препод Он точно плюсы преподает, а не сишечку?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
15.05.2014, 23:31     Представление из бит в байт #22
Цитата Сообщение от Bdavid008 Посмотреть сообщение
у меня препод любит оптимизацию )я тут и так с хитрил в массив интовский все загнал
ни фига себе оптимизация
31 бит впустую
Bdavid008
20 / 20 / 0
Регистрация: 24.03.2014
Сообщений: 77
16.05.2014, 10:44  [ТС]     Представление из бит в байт #23
он как раз нам асм и преподает)ну помогите ребят)
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.05.2014, 11:02     Представление из бит в байт #24
Цитата Сообщение от Bdavid008 Посмотреть сообщение
ну помогите ребят)
С чем помочь-то? По-моему всё обсосали уже.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 14:32     Представление из бит в байт
Еще ссылки по теме:
переход с 32 бит на 64 бит C++
C++ Бит реверс
Инверсия бит C++
Старший бит C++
C++ Подсчет количества бит

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

Или воспользуйтесь поиском по форуму:
Bdavid008
20 / 20 / 0
Регистрация: 24.03.2014
Сообщений: 77
16.05.2014, 14:32  [ТС]     Представление из бит в байт #25
Кароче я розобрался мой косяк вот код если что
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const int NUM = 64;
                int sampel[NUM];
                int bit[NUM];
                int k = 0;
                for (int i = 0; i < N; i++){
                    for (int j = 0, byte = buf[i]; j < 8; byte >>= 1, j++){
                        byte & 0x01 ? bit[k] = 1 : bit[k] = 0;
                        k++;
                    }
                    
                    }
                for (int i = 0; i < NUM; i++){
                    if (i % 8 == 0){
                        cout << endl;
                    }
 
                    cout << bit[i];
 
                }
                for (i = 0; i < NUM; i++) //перестановка
                {
                    sampel[i]=bit[i];
    
                }
                
                
                for (int i = 1; i <= NUM; i++){
                    if (i % 8 == 0){
                        cout << endl;
                    }
                    
                        cout << bit[i];
                    
                }
                for (int i = 0; i < N; i++)
                {
                    buf[i] = 0;
                }
                i = 8;
                k = 0;
                for (int j = 0; j < N; j++){
                    for (; k < i; k++){
                        buf[j] |= (bit[k] <<= k % 8);
                        //cout << k << endl;
 
                    }
                    cout << j << buf[j] << endl;
                    i = i + 8;
 
                }
Добавлено через 39 секунд
согасен ,ладно спасибо
Yandex
Объявления
16.05.2014, 14:32     Представление из бит в байт
Ответ Создать тему
Опции темы

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