powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с битами в С++
11 сообщений из 11, страница 1 из 1
Работа с битами в С++
    #34058382
Yosip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите с какой стороны начать.Надо сделать кодирующую программу которая должна делать следующее : 1 байт превратить в три байта путем трех разового повторения каждого бита.Ниже пример:
DE == D -- E == F(11)-- C(12) -- 7(9) -- F(10) -- F(7) -- 8(8)
-------1101 - 1110 - 1111 -1100 - 0111 - 1111 - 1111 - 1000
И так несколько байт.Потом из каждых четырех бит (полубайта)собрать новые байты ( в скобках указаны номера на которые их надо ставить )
Ниже пример как надо собирать - верхний ряд значение в шестнадцатиречном виде, нижний ряд это тот номер что в скобках вверху , то есть откуда его видергивать.
C 0 0 1 E 0 F 8 7 F F C 0 0 0 0 0
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13)(14) (15)(16) (17)
Поскажите как это сделать в С++.
Спасибо всем за советы.
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34059086
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YosipПодскажите с какой стороны начать.Надо сделать кодирующую программу которая должна делать следующее : 1 байт превратить в три байта путем трех разового повторения каждого бита.Ниже пример:
DE == D -- E == F(11)-- C(12) -- 7(9) -- F(10) -- F(7) -- 8(8)
-------1101 - 1110 - 1111 -1100 - 0111 - 1111 - 1111 - 1000
И так несколько байт.Потом из каждых четырех бит (полубайта)собрать новые байты ( в скобках указаны номера на которые их надо ставить )
Ниже пример как надо собирать - верхний ряд значение в шестнадцатиречном виде, нижний ряд это тот номер что в скобках вверху , то есть откуда его видергивать.
C 0 0 1 E 0 F 8 7 F F C 0 0 0 0 0
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13)(14) (15)(16) (17)
Поскажите как это сделать в С++.
Спасибо всем за советы.

Что требуется во второй части - не понял.

Разбей на 2 этапа. В первом цикл(ы) с индексами текущих бит.
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34059149
Yosip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первая задача - перекодировать один байт в три путем утроения каждого бита в исходном байте.
Например исходный байт DE.Его двоичное представление - 1101 1110 . Первая "1" пишется три раза "111", вторая тоже три раза "111", третим идет "0" - пишется три раза "000" и т.д.Получается в результате 8*3=24 бита , которые раскладываются в три байта
1101 1110 --> 1111 1100 - 0111 1111 - 1111 1000

Вторая задача - получить доступ отдельно к старшему и младшему полубайту чтоб собрать из них новые байты. То есть перые 1111 надо выдернуть и поставить скажем на место младшей тетрады в пятом байте.
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34059207
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YosipПервая задача - перекодировать один байт в три путем утроения каждого бита в исходном байте.
Например исходный байт DE.Его двоичное представление - 1101 1110 . Первая "1" пишется три раза "111", вторая тоже три раза "111", третим идет "0" - пишется три раза "000" и т.д.Получается в результате 8*3=24 бита , которые раскладываются в три байта
1101 1110 --> 1111 1100 - 0111 1111 - 1111 1000

Вторая задача - получить доступ отдельно к старшему и младшему полубайту чтоб собрать из них новые байты. То есть перые 1111 надо выдернуть и поставить скажем на место младшей тетрады в пятом байте.

Значит - пробежаться по тетрадам и в соответствии с таблицей (правила, из постановки задачи), разместить их там где надо.
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34060470
H.A.M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот такая чтука не подойдет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class BitWork
	{
		public int Set(int var, int No)
		{
			return Color | ( 1 <<(No- 1 ));
		}
		public int Reset(int var, int No)
		{
            return Color & ~( 1 <<(No- 1 ));
		}
		public int Get(int var, int No)
		{
			return (Color & ( 1 <<(No- 1 ))) !=  0 ;
		}
	}
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34060523
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H.A.M.

bitset
bit fields

Неужели этого мало? :)
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34060607
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H.A.M.а вот такая чтука не подойдет?
...


Ну, это тока операции выделения битов.
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34060955
H.A.M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitrii K. H.A.M.

bitset
bit fields

Неужели этого мало? :)
А в чем тогда проблема?
Размножить биты по три?
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34061020
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H.A.M. Dmitrii K. H.A.M.

bitset
bit fields

Неужели этого мало? :)
А в чем тогда проблема?
Размножить биты по три?
Это кому вопрос?
У меня с битами проблем нет. )
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34061519
Yosip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пока начинающий прогамист.И в С++ работать с отдельными битами и тетрадами работать не приходилось.
За ответы большое спасибо.Завтра обработаю все ответы.
...
Рейтинг: 0 / 0
Работа с битами в С++
    #34065782
Yosip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался . Всем спасибо !
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с битами в С++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]