Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Олеся11
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 8
#1

Копирование младшей половины байта в старшую половину - C (СИ)

10.12.2012, 17:48. Просмотров 1052. Ответов 5
Метки нет (Все метки)

программе задается целое число в шестнадцатеричном представлении из диапазона от OxOO до OxFF.
Программа должна осуществлять копирование младшей половины байта в старшую половину(например, OxAB -> OxBB ) и выводить на экран результат в шестнадцатеричном виде.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 17:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Копирование младшей половины байта в старшую половину (C (СИ)):

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

Строки верхней половины матрицы поменять местами со строками нижней половины - C (СИ)
Дан двумерный массив из четного числа строк. Строки верхней половины массива поменять местами со строками нижней половины Добавлено...

Столбцы левой половины массива поменять местами со столбцами правой половины - C (СИ)
1. Дан двумерный массив из четного числа столбцов. Столбцы левой половины массива поменять местами со столбцами правой половины. 2. Дан...

Определение младшей цифры числа - C (СИ)
Написать программу на языке Си

Вычислить произведение младшей цифры четырехзначного числа - C (СИ)
С языком не знаком,а разобраться еще не успел.Буду благодарен ,если напишите программу. "Вычислить произведение младшей цифры...

MC68HC705K1. Запись в старшую тетраду аккумулятора зеркального отображения младшей - Микроконтроллеры
Написать программу, записывающую в старшую тетраду аккумулятора зеркальное отображение младшей (11110011->11000011) В ассемблере для...

5
easybudda
Модератор
Эксперт CЭксперт С++
9725 / 5676 / 972
Регистрация: 25.07.2009
Сообщений: 10,923
10.12.2012, 18:26 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void) {
    unsigned n;
    
    while ( printf("Number: ") && scanf("%i", &n) == 1 && n < 0x100 )
        printf("Result: %#02x\n", n & 0xf | ( ( n & 0xf ) << 4 ) );
    
    return 0;
}
Чувство, что перемудрил, но в принципе работает...
1
Олеся11
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 8
10.12.2012, 20:34  [ТС] #3
Спасибо)
а можно чтобы чуть чуть попроще решено было хоть и подлиннее?
0
Kuzia domovenok
2117 / 1946 / 190
Регистрация: 25.03.2012
Сообщений: 6,750
Записей в блоге: 1
10.12.2012, 20:52 #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void) {
    unsigned n;
    unsigned tetra;
    printf("Number: ");
    scanf("%i", &n);
    tetra=n&0x0f;//младший полубайт
    n=(tetra<<4) //он же на месте старшей тетрады
          |tetra;//+он же на месте младшей тетрады
    printf("Result: %x\n", n);
    return 0;
}
1
easybudda
Модератор
Эксперт CЭксперт С++
9725 / 5676 / 972
Регистрация: 25.07.2009
Сообщений: 10,923
10.12.2012, 20:53 #5
Цитата Сообщение от Олеся11 Посмотреть сообщение
а можно чтобы чуть чуть попроще решено было хоть и подлиннее?
Ну давайте разобьём задачу на части: после того, как число прочитали и убедились, что оно не выходит за обозначенные границы, нам нужно выделить младший полубайт
C
1
n = n & 0xf; /* всё, что "выше" обнулилось */
а за тем скопировать его в старший
C
1
n = n | ( n << 4 );
Вот собственно и всё. Получилось две строки, но надеюсь, так понятнее...
1
Олеся11
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 8
10.12.2012, 22:16  [ТС] #6
Спасибо)
0
10.12.2012, 22:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2012, 22:16
Привет! Вот еще темы с ответами:

Циклический сдвиг в младшей тетраде байта на n позиций вправо - C++
Циклический сдвиг в младшей тетради байта на n позиций вправо Ребят поскажите как написать программу,может кто сталкивался с таким

Определить сумму цифр старшей и младшей половины числа - C++
Помогите, пожалуйста, не могу решить задачу до конца.... Дано натуральное число, требуется вывести сначала сумму цифр старшей половины...

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

Старшую тетраду каждого байта числа заменить результатом операции «стрелка Пирса» - C++
Сама задача. Старшую тетраду каждого байта числа заменить результатом операции «стрелка Пирса» старшей и младшей тетрад, а младшую...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.