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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 16:22   #1
Аnтоn
Новичок
Джуниор
 
Регистрация: 09.12.2010
Сообщений: 1
По умолчанию Зеркально поменять местами биты. Си.

Здравствуйте. Задание такое. Зеркально поменять местами разряды внутри старшего и младшего байтов каждого числа.
Вот то что получилось у меня:

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define SIZE  10

main ()
{
	clrscr ();
	randomize();
	int array [SIZE], a, b, i, j;
	printf(" Decimal array\n");
	for ( i = 0; i < SIZE; i++) {
		array[i] = rand() & 255 ;
		printf ("%d ", array[i]);
	}
	printf("\n\n Binary array\n");
	for (i = 0; i < SIZE; i++) {
		for (j = 15; j >= 0; j--) {
			if (j == 7)
				printf(" ");
				printf ("%d", (array[i] & 1 << j) == (1 << j));
		}
		printf ("\n");
	}
	printf ("\n Mirror array\n");
	for (i = 0; i < SIZE; i++) {
		for (j = 0; j <= 7; j++) {
			a = (array[i] & 1 << j) == (1 << j);
			b = (array[i] & 1 << (15 - j)) == (1 << 15 - j);
			if (a != b) {
				array[i] = array[i] | 1 << 15 - j;
				array[i] = array[i] ^ 1 << j;
			}
			else
				array[i] = array[i];
		}
	}
	for (i = 0; i < SIZE; i++) {
		for (j = 15; j >= 0; j--) {
			if (j == 7)
				printf(" ");
				printf ("%d", (array[i] & 1 << j) == (1 << j));
		}
		printf ("\n");
	}
	return 0;
}
А проблема у меня такая, программа работает правильно только если элементы массива не больше 255.
Как исправить программу чтобы можно было генерировать элементы массива до 2 байт
Аnтоn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица B(n,n). поменять местами. bratello41 Паскаль, Turbo Pascal, PascalABC.NET 7 11.06.2010 10:23
поменять местами научите Паскаль, Turbo Pascal, PascalABC.NET 13 08.01.2009 13:43
ПОменять значения местами qip2005 Паскаль, Turbo Pascal, PascalABC.NET 6 24.12.2008 23:38
Поменять местами абзацы Иллидан Microsoft Office Word 1 16.09.2008 08:14
поменять местами столбцы veter_s_morya SQL, базы данных 4 29.06.2008 13:36