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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2018, 19:28   #1
StillNoob
Пользователь
 
Регистрация: 27.03.2018
Сообщений: 21
По умолчанию В длинном целом числе N числе поменять байты в зеркальном порядке

Задание:В длинном целом числе N числе поменять байты в зеркальном порядке.
Я написал функцию которая печатает в байтах,но как дальше не знаю т.е.как зеркально отразить каждый байт
Код:
#include <stdio.h>
void Printbytes(unsigned int a)
{
	
	int len = sizeof(int)*8;        
	unsigned int fl=1 << (len-1);
	while (len>0)
	{
		if ((len % 4) == 0) printf(" ");
		if ((a & fl) != 0) printf("1");
		else printf("0");
		len--;
		fl >>=1;
	}
	printf("\n");
}
можете помочь
использовать только библиотеку <stdio.h> и не использовать указатели
StillNoob вне форума Ответить с цитированием
Старый 18.05.2018, 20:12   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от StillNoob Посмотреть сообщение
и не использовать указатели
Вам надо вывести формулу для того, чтоб превратить число XYZ в ZYX.
Для разных разрядностей формула будет чуть разной, но принцип будет тот же.
Надо будет использовать операции деления /, получения остатка % и умножение *.
waleri вне форума Ответить с цитированием
Старый 19.05.2018, 01:00   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.05.2018, 11:23   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Эх, давненько я не брал в руки Си-шек...
Код:
#include <conio.h>
#include <stdio.h>
 
union my_uni{
    unsigned long us;
    unsigned char ch[4];
};
 
void main()
{
unsigned char tmp ;
union my_uni u ;
    u.us = 0x8102CFF1 ;
    printf("%10lX\n", u.us);
    tmp = u.ch[0] ;
    u.ch[0] = u.ch[3] ;
    u.ch[3]=tmp ;  
    tmp = u.ch[1] ;
    u.ch[1] = u.ch[2] ;
    u.ch[2]=tmp ;  
    printf("%10lX\n", u.us);
    getch();
}
Изображения
Тип файла: jpg FF.JPG (3.2 Кб, 87 просмотров)
digitalis вне форума Ответить с цитированием
Старый 19.05.2018, 11:30   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Эх, давненько я не брал в руки Си-шек...
Код:
#include <conio.h>
#include <stdio.h>
 
union my_uni{
    unsigned long us;
    unsigned char ch[4];
};
 
void main()
{
unsigned char tmp ;
union my_uni u ;
    u.us = 0x8102CFF1 ;
    printf("%10lX\n", u.us);
    tmp = u.ch[0] ;
    u.ch[0] = u.ch[3] ;
    u.ch[3]=tmp ;  
    tmp = u.ch[1] ;
    u.ch[1] = u.ch[2] ;
    u.ch[2]=tmp ;  
    printf("%10lX\n", u.us);
    getch();
}
Чо, мой вариант не работает?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.05.2018, 11:36   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Не знаю. Мой -точно работает, и простой, без всяких арифм. операций.
------------------------------
"Каждому программеру - по варианту" © Я
digitalis вне форума Ответить с цитированием
Старый 19.05.2018, 11:40   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Не знаю. Мой -точно работает, и простой, без всяких арифм. операций.
Ааа. Ну лан.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.05.2018, 15:13   #8
StillNoob
Пользователь
 
Регистрация: 27.03.2018
Сообщений: 21
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Ааа. Ну лан.
спасибо,но мне нужно по-другому,
я написал функцию которая в байты переводит, например:
Dvouchnoe predstavlenue chisla:
Do: 0000 0111 0101 1011 1100 1101 0001 0101
Posle: 1110 0000 1101 1010 1011 0011 1010 1000
StillNoob вне форума Ответить с цитированием
Старый 19.05.2018, 17:14   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Дык это другой коленкор: не байты зеркально переставлять, а биты внутри байта, оставляя байты в том же порядке. Это точно - соответствует заданию? Ну тогда нужно вкуривать вариант от min@y™. Мне - лень.
digitalis вне форума Ответить с цитированием
Старый 19.05.2018, 17:24   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от StillNoob Посмотреть сообщение
спасибо,но мне нужно по-другому,
я написал функцию которая в байты переводит, например:
Dvouchnoe predstavlenue chisla:
Do: 0000 0111 0101 1011 1100 1101 0001 0101
Posle: 1110 0000 1101 1010 1011 0011 1010 1000
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В данном целом числе N, заменить нулями все цифры стоящие на нечетных позициях в числе TsykunovDmitriy Паскаль, Turbo Pascal, PascalABC.NET 3 07.05.2014 22:21
количество цифр в целом числе. Pascal ABC lyulka Помощь студентам 2 14.12.2011 10:56
найти вторую цифру в целом положительном числе Dane4ka Помощь студентам 6 13.04.2011 20:33
нужно в заданном целом числе определить Kinski Помощь студентам 2 10.02.2011 12:08
Перестановка цифр в целом числе. Паскаль. Cheetah Помощь студентам 5 16.10.2008 21:07