Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2016, 15:50   #1
РоманВас
 
Регистрация: 29.03.2016
Сообщений: 8
По умолчанию Замена отдельных битов в символе

Помогите, пожалуйста, ввести последовательность из 8 символов. В их двоичном представлении заменить: если младший бит 1, заменить его на 0, если младший бит 0, заменить его и 2-ой бит единицами. Вывести исходную последовательность и её восьмеричные коды; преобразованную последовательность и её восьмеричные коды.
РоманВас вне форума Ответить с цитированием
Старый 29.03.2016, 15:55   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
if(a & 0x01) { a &= ~0x01; } else { a |= 0x03; }
p51x вне форума Ответить с цитированием
Старый 30.03.2016, 16:20   #3
РоманВас
 
Регистрация: 29.03.2016
Сообщений: 8
По умолчанию

Спасибо !
РоманВас вне форума Ответить с цитированием
Старый 31.03.2016, 09:27   #4
РоманВас
 
Регистрация: 29.03.2016
Сообщений: 8
По умолчанию

Посмотрите, п-та, что у меня тут в коде не правильно ? Не выводятся восьмеричные коды исходной последовательности и по-моему сама последовательность не преобразуется.
Код:
#include <stdio.h>
 
#define SIZE 8
 
int main(void)
{
    char str[SIZE];
    int i;
    while(scanf("%s", str))
    {
        for(i = 0; (str[i] != '\0') && (i < SIZE); ++i)
            if((str[i] & 0x01))
                str[i] &= ~0x01;
            else 
                str[i] |= 0x03;
        printf("%s\n", str);
        for(i = 0; (str[i] != '\0') && (i < SIZE); ++i)
            printf("%o ", str[i]);
        printf("\n");
    }
    return 0;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 31.03.2016 в 09:45.
РоманВас вне форума Ответить с цитированием
Старый 31.03.2016, 09:48   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
по-моему сама последовательность не преобразуется
исходная 1234567
вывод 0327476
они одинаковы?

Цитата:
Не выводятся восьмеричные коды исходной последовательности
а следующая строка с 60 и т.д. это что?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Консолидация отдельных полей отдельных файлов на один лист Paramount Microsoft Office Excel 15 30.01.2013 17:41
замена битов в числе Вечный_студент Общие вопросы C/C++ 10 09.05.2012 17:26
замена битов в числе Вечный_студент Помощь студентам 11 08.05.2012 00:21
Работа со строками и файлами... Проблема в символе renigal1 БД в Delphi 4 20.03.2012 15:24
Вылетает iconv на нечитаемом символе glob() Общие вопросы C/C++ 0 23.09.2009 12:41