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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2010, 20:00   #1
SPBcore
 
Регистрация: 15.12.2010
Сообщений: 3
По умолчанию реверс битов

помогите пожалуйста, программа не корректно работает.
нужно осуществить реверс битов введенного числа

вот то что мне кажется верным. почему то при любом введенном Х выдает один и тот же десятизначный ответ:
Код:
#include <stdio.h>
#include <math.h>
//typedef unsigned char Integer; 
//typedef unsigned short Integer; 
typedef unsigned int   Integer;  
//typedef unsigned long  Integer; 
void main(void)
{
	
	Integer a,r,i,x,m,n,c;
   scanf("%i",&x);
	a=8*sizeof(x);
	r=0;
	n=1;
	for(i=1;i<=a;i++)
	{
    m=x&n;
	 n=n<<1;
	 c=m<<(a-i);
	 r=r|c;
	}
printf("%u",r);
}

Последний раз редактировалось Stilet; 15.12.2010 в 20:52.
SPBcore вне форума Ответить с цитированием
Старый 16.12.2010, 01:00   #2
deviart
 
Регистрация: 08.08.2010
Сообщений: 8
По умолчанию

c - это 1 в текущем бите и 0 в остальных позициях.
r=r|c; означает установить текущий бит в единицу. То есть устанавливаешь ВСЕ биты в единицу. Устанавливать надо только те биты, "противоположные" которым установлены в исходном числе.

Я бы сделал так:

r = 0;

for(i = 0; i < a; ++i)
r |= (x&(1<<i))>>i<<(a - i - 1);

Кстати, в байте, вообще говоря, не 8 бит, а CHAR_BIT бит. CHAR_BIT - символическая константа, лежащая в хедере stdint.h
deviart вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сдвиг битов XOKS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 08.11.2010 18:11
реверс строки An123 Помощь студентам 2 04.02.2010 08:49
Реверс 2 grimm_jow Общие вопросы C/C++ 5 31.01.2010 03:41
Реверс четверок Ivaine Помощь студентам 1 29.12.2008 18:22
Перестановка битов. RegentM Общие вопросы Delphi 3 05.11.2007 17:23