|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.05.2013, 22:34 | #1 |
Пользователь
Регистрация: 12.12.2011
Сообщений: 14
|
С++ побитовые операции
В байтах, содержащих четное количество единичных битов попарно
поменять местами соседние биты Где допущена ошибка, вроде все как надо, но неправильно выводит. Где ошибка подскажите пожалуйста. #include <iostream> #include <stdio.h> #include <stdlib.h> #include <conio.h> using namespace std; int main() {unsigned a,b=0; int x,n=0,c=0; cout<<"vvedite chislo "; cin>>hex>>a; b=a; while(b!=0) {b=b/2; c++;} if (c%8!=0) c=c+8-c%8;//количество бит x=0; while (x<c) {for(int i=x;i<(x+8);i++) if((a & (1<<i))!=0)//если i-й бит = 1 {n++;}//считаем его if ((n%2)==0)//проверяем четность количества единичных битов {for(int i=x;i<(x+8);i=i+2) if((a & (1<<i))!=0)//если i-й бит = 1 {if((a & (1<<(i+1)))==0)//если соседний бит = 0 {a=a & (~(1<<i));//обнуляем i-й бит a=a|(1<<(i+1));}//устанавливаем единичный бит } else if((a & (1<<i))==0)//если i-й бит = 1 {if((a & (1<<(i+1)))!=0)//если соседний бит = 0 {a=a & (~(1<<(i+1)));//обнуляем i-й бит a=a|(1<<i);}//устанавливаем единичный бит } } x=x+8;//переходим к следующему байту n=0; } cout<<hex<<a; getch(); } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С/С++, ПОБИТОВЫЕ ОПЕРАЦИИ. | gopnikdj | Помощь студентам | 5 | 25.12.2012 18:29 |
Си.Побитовые операции | Alina111 | Visual C++ | 6 | 24.06.2012 20:53 |
Побитовые операции | Unique | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 29.08.2010 18:50 |
Побитовые операции С++ | Defa4ka | Помощь студентам | 4 | 22.06.2010 14:55 |
побитовые операции | Dimarik | Общие вопросы C/C++ | 7 | 16.04.2010 19:27 |