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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Подключение Dll на С++ к Java и С# http://www.cyberforum.ru/cpp-beginners/thread1176075.html
Добрый день. Подскажите, пожалуйста куда копать: надо создать DLL на С++ с функциями, структурами и классом так, чтобы её потом можно было подключить к Java и С#. Как подключить её к другому С++ приложению - я понимаю. Либо статика либо хэдер, который у меня есть. А вот как это всё импортировать в Java и С# я не представляю, так как кроме обычных типов, там есть ещё и классы и структуры. ...
C++ Неработает проверка на ввод enter По логке кода, при нажатии на ентер цыкл должен оборватся, но этого не происходит, почему? char login; char pass; char fio; cout<<"Registration: \n"; cout<<"Write login (max 10 length)\n\n"; for (int i = 0; i < 9; i++) http://www.cyberforum.ru/cpp-beginners/thread1176063.html
В массиве найти элемент больше заданного, удалить каждый пятый и последние три заменить на ср. арифметическое C++
1-Дан одномерный массив Xn. Найти первый элемент массива, значение которого ,больше А. Удалить каждый пятый элемент. Последние три элемента массива заменить на значение среднего арифме-тического элементов исходного массива с четными номерами.
C++ Написать процедуру обмена столбца и строки двухмерного массива
Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых совпадают.
C++ Ошибка в создании массива объектов http://www.cyberforum.ru/cpp-beginners/thread1176052.html
Есть класс Circle, в котором определены переменные для координат Х и У и радиуса окружности (здесь всё правильно, вроде бы). При компиляции на класс и реализацию компилятор не ругается (Dev-C++), а вот в основной программе массив, похоже, не создаётся. Это класс: #if !defined CIRCLE_H #define CIRCLE_H #include <iostream> using namespace std; class Circle{ private: double coordX,...
C++ Исправить программу - не дублировать ввод Помогите пожалуйста исправить ошибку. "Программа при выводе ответа повторяет его несколько раз" - помогите исправить код , чтобы ответ был выведен один раз.Если не сложно то скиньте сразу исправленный код целиком:)Язык С++! Заранее огромное спасибо!!!))) #include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv) { подробнее

Показать сообщение отдельно
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,058
14.05.2014, 23:10     Представление из бит в байт
для разнообразия мог предложить такой вариант
C++
1
2
3
4
unsigned char MyByte=0;
for( unsigned char i=0,j=1;j;i++,j*=2)
 if(MyBit[i])
   MyByte|=j;
тоже самое без условия
C++
1
2
3
unsigned char MyByte=0;
for( unsigned char i=0,j=1;j;i++,j=j<<1)
    MyByte|=j*MyBit[i];
прикол в том что при достижении j значения 0х80 при следующем умножении( сдвиг влево) произойдет переполнение разрядной сетки и там будет 0

пользоваться именами byte и bit не рекомендую
в некоторых диалектах это типы
byte чаще всего это unsigned char
а bit в микроконтроллерах это действительно бит, эти диалекты как и процессоры позволяют работать с отдельными битами

Добавлено через 7 минут
Цитата Сообщение от Bdavid008 Посмотреть сообщение
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++;
 }
здесь закралась одна маленькая ошибка, которая может испортить все
дело в том, что старший бит 0x80 записывается в младший элемент массива
поправить можно хотя бы так
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 & 0x01? bit[k] = 1 : bit[k] = 0;
 k++;
 }
при этом можно вообще обойтись без условия
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++){
 
  bit[k] = byte & 0x01;
 k++;
 }
 
Текущее время: 15:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru