С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
51 / 3 / 1
Регистрация: 02.06.2013
Сообщений: 162
Записей в блоге: 2
1

Работа с двоичным кодом

14.03.2015, 18:38. Показов 774. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Если в числе встречается последовательность битов 000, заменить её на 0110 (лишние разряды сдвигать влево)
Вот написал код
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(void)
{
   unsigned int dec, bin, siz;
   unsigned int mask1, mask2;
   int i;
   srand(time(NULL));
   dec=rand(); //Переменной dec присваивается случайное число
   siz=sizeof(dec); //Присваиваем переменной siz размер (в байтах) переменной dec
   cout<<"случайное число " << dec;
   cout<<" в двоичном коде:\n";
   for(i=siz*8-1;i>=0;i--) /*цикл выводящий двоичное представления случайного числа записаного в переменной dec*/
   {
      bin=(dec>>i)&1;
      cout<< bin;
   }
   cout<<"\nПреобразование выполнена:\n";
   mask1=7; //Создаём маску с единицами в трёх крайних правых битах
   mask2=6; //Создаём маску с единицами в 2 и 3 битах
   for(i=1;i<=(siz*8)-1;i++) /*задаём цикл выполняющийся столько раз сколько битов*/ 
   {
      if((dec^mask1)==(mask1)) //поиск 000 
         {
             dec=dec&0|mask2;
         }
         mask1=mask1<<1; 
         mask2=mask2<<1; //сдвигаем маски на 1 бит влево для продолжения поиска 000
         }
   for(i=siz*8-1;i>=0;i--) //цикл выводящий результат преобразования двоичного числа
   {
        bin=(dec>>i)&1;
        cout<< bin;
   }
   return 0;
Не получается, помогите выполнить это задание, я не знаю как сделать так, что бы он искал три нуля, и менял их на 0110.
проблема у меня возникла в этом блоке
C++
1
2
3
4
5
6
7
8
9
10
11
   mask1=7; //Создаём маску с единицами в трёх крайних правых битах
   mask2=6; //Создаём маску с единицами в 2 и 3 битах
   for(i=1;i<=(siz*8)-1;i++) /*задаём цикл выполняющийся столько раз сколько битов*/ 
   {
      if((dec^mask1)==(mask1)) //поиск 000 
         {
             dec=dec&0|mask2;
         }
         mask1=mask1<<1; 
         mask2=mask2<<1; //сдвигаем маски на 1 бит влево для продолжения поиска 000
         }
Добавлено через 2 минуты
Была у меня прога, очень похожа, только там нужно было перебирать соседние группы из 3х битов(триплёты), и если они одинаковы то, инвертировать младший бит старшего триплета, и старший бит младшего триплёта.
программа одинакова, только блок в котором я запоролся выглядит так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   mask1=7; //Создаём маску с единицами в трёх крайних правых битах
   mask2=12; //Создаём маску с единицами в 3 и 4 битах
   for(i=1;i<=(siz*8/3)-1;i++) /*задаём цикл выполняющийся столько раз сколько пар соседних триплётов в двоичном 
   представлении числа*/ 
   {
      if((dec&mask1)==((dec&(mask1<<3))>>3)) //сравниваем соседнии триплеты 
         {
             dec^=mask2; /*если соседнии триплеты совпадают то инвертируется младший бит старшего
             триплета и старший бит младшего триплета*/
         }
         mask1=mask1<<3; 
         mask2=mask2<<3; //сдвигаем маски на 3 бита влево для продолжения поиска сосдедних пар триплетов
         }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2015, 18:38
Ответы с готовыми решениями:

работа с двоичным кодом
Задача не сложная но материала на ту тему Я на просторах интернета так и не нашел( Через небольшую...

Работа с двоичным файлом
Ребят помогите. Создать двоичный файл и записать в него степени числа 3. Вывести на экран...

Работа с двоичным файлом: Перевести содержание файла в поток байт
Существует файл D:\proba.txt в себе он содержит: 68 11 00 00 00 00 71 00 00 00 09 01 C8 01 00 00...

Работа с пролог кодом из среды С++
Добрый вечер. Мне дали задание в университете реализовать работу с Prolog кодом из среды С++. И...

0
14.03.2015, 18:38
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2015, 18:38
Помогаю со студенческими работами здесь

Сортировка двоичным включением
У меня задание продемонстрировать в виде таблицы алгоритм роботы сортировки с двоичным включением...

Нужно разобраться с двоичным представлением файла
написал такую программу которая сначала определяет размер файла, после создает массив такого же...

Маленькая программка - вопрос по двоичным числам.
Наткнулся на это. Подскажите как добавить в функционал программки еще и двоичные числа.. PS. хз,...

Задача с двоичным поиском в упорядоченном массиве
Может, кто с кодом помочь и комментариями. Дан упорядоченный по неубыванию целочисленный массив...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru