Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 48
1

Поменять местами 4 старших байта и 4 младших в числе double (указатели)

06.12.2014, 22:52. Показов 2488. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача следующая:
дано число типа double. С помощью указателей поменять местами 4 первых и 4 последний байта в этом числе не переводя его в двоичную систему (оно же в памяти компьютера и так там в двоичной записи храниться)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2014, 22:52
Ответы с готовыми решениями:

Поменять местами значения старших и младших байтов переменной
Давно что то писал на ассемблере, и уже всё позабыл. Но к моему несчастью очень припекло сейчас,...

Программа на ассемблере "Поменять местами значения старших и младших байтов переменной"
Помогите решить небольшую задачу - Дана переменная a (тип word). Поменять местами значения старших...

Извлечь из байта четыре старших и четыре младших бита?
Как извлечь из байта четыре старших и четыре младших бита? На Си это выглядит вот так:...

Старший бит старшего байта поменять местами с младшим битом младшего байта
Ребят помогите прогу доработать. Задача такая: В одномерном массиве чисел целого типа (16 бит)...

2
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
06.12.2014, 23:33 2
C
1
2
3
4
5
long *p = (long *)(&d);
long tmp;
tmp = *p;
*p = *(p+1);
*(p+1) = tmp;
За платформо-независимость не ручаюсь.
0
5 / 5 / 8
Регистрация: 06.12.2014
Сообщений: 27
06.12.2014, 23:50 3
Лучший ответ Сообщение было отмечено Sopel как решение

Решение

Sopel, говорят, что sizeof(char) всегда равен 1-му байту:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int
main(int argc, char** argv)
{
    double lovely_number = -99.18;
    printf("%lf\n", lovely_number);
 
    char* iter = (char*) &lovely_number;
    char tmp;
    size_t num_len = sizeof lovely_number;
    size_t hlf_len = num_len / 2;
    size_t i;
    for (i = 0; i < hlf_len; ++i) {
        tmp = iter[ i ];
        printf("%c\n", tmp);
        iter[ i ] = iter[ num_len - i - 1 ];
        iter[ num_len - i - 1 ] = tmp;
    }
    printf("%lf\n", lovely_number);
    return 0;
}
Можно было бы позабавиться с интами фиксированной длины.
1
06.12.2014, 23:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2014, 23:50
Помогаю со студенческими работами здесь

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

Поменять местами биты младшего байта нечетных чисел
Помогите написать программу, нужно поменять местами биты младшего байта нечетных чисел. Старший...

Поменять местами биты младшего байта каждого числа
Ребята выручайте! Долгов набрал все не успеваю! Написать прогу пользуюсь Lazarus Заранее...

Поменять попарно местами младшие и старшие полубайты каждого байта
Дана последовательность байт заканчивающаяся нулем. Поменять попарно местами младшие и старшие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru