Форум программистов, компьютерный форум CyberForum.ru

Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число - C++

Восстановить пароль Регистрация
 
batra
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
30.10.2012, 15:28     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #1
Помогите написать программу, использующую функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число, состоящее из младших 8 бит старшего слова и старших 8 бит младшего слова. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 15:28     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число
Посмотрите здесь:

C++ Напишите функцию, получающую целое значение, которая возвращает число с обращенным порядком цифр
C++ Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с таким номером
Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно степенью двойки C++
Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым C++
C++ Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
30.10.2012, 15:42     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
short middle(int value) { return ( value & 0xffff00 ) >> 8; }
 
int main(void) {
    int n;
    
    while ( printf("Value: ") && scanf("%i", &n) == 1 )
        printf("Reult: %hx\n", middle(n));
    
    return 0;
}
main на С++ сами перепишите, если принципиально, функция никак не изменится.
batra
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
30.10.2012, 17:20  [ТС]     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #3
Спасибо большое. Выручил.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
30.10.2012, 17:27     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Достаточно написать:

C
unsigned short middle (int value) { return value >> 8; }
лишние биты отрежутся за счёт преобразования к short'у
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
30.10.2012, 17:51     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #5
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
кстати, да.
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,663
30.10.2012, 18:54     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #6
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
30.10.2012, 19:10     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #7
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
Мы говорим не о сферическом коне в вакууме, а о конкретной задаче в конкретных условиях. И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а. Хотя в общем случае твоё замечание, безусловно, верное
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.12.2012, 20:24     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #8
Цитата Сообщение от Evg Посмотреть сообщение
И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а.
Откуда Вы это знаете?
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Зачем такое писать.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
06.12.2012, 20:56     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #9
Цитата Сообщение от go Посмотреть сообщение
Откуда Вы это знаете?
Ты со мной не согласен?

Цитата Сообщение от go Посмотреть сообщение
Зачем такое писать
Напиши так, как считаешь правильным
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.12.2012, 21:11     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #10
Цитата Сообщение от Evg Посмотреть сообщение
Ты со мной не согласен?
Есть стандарт, согласно которому и необходимо писать. Если вы пишете под какую-то именно платформу, то зачем писать непереносимый код. Это очень плохо, и в будущем могут быть пролема, да и есть вероятность, что у ТСа он отработает не правильно (фифти фифти, как говорят).
Цитата Сообщение от Evg Посмотреть сообщение
Напиши так, как считаешь правильным
Мы не ведем речь, как мне нужно написать, а обсуждаем ваше предложение, и выявляем ваши ошибки.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
06.12.2012, 21:44     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #11
Цитата Сообщение от go Посмотреть сообщение
Есть стандарт, согласно которому и необходимо писать. Если вы пишете под какую-то именно платформу, то зачем писать непереносимый код. Это очень плохо, и в будущем могут быть пролема, да и есть вероятность, что у ТСа он отработает не правильно (фифти фифти, как говорят)
Человек пришёл с конкретным заданием из школы или из института, при этом не умеет программировать. О какой совместимости может идти речь в этих условиях?

Цитата Сообщение от go Посмотреть сообщение
Мы не ведем речь, как мне нужно написать, а обсуждаем ваше предложение, и выявляем ваши ошибки
Я говорил о вполне конкретной задаче и о вполне конкретном её решении. Общее решение получается из моего конкретного путём замены "int" -> "uint32", "unsigned short" -> "uint16", причём не меняя концепции (т.е. приведение типа, обрезающее лишние биты, будет работать именно так)

Добавлено через 56 секунд
Цитата Сообщение от go Посмотреть сообщение
Если вы пишете под какую-то именно платформу, то зачем писать непереносимый код
Наличие в программе базовых типов Си автоматически делает любую программу непереносимой
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.12.2012, 21:55     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #12
Цитата Сообщение от Evg Посмотреть сообщение
uint16
Одно использовать этот тип где четко видно, другое писать как у Вас, когда все время будет работать правильно, а потом бац и при переносе на другую платформу все скомпилится, но отработает не правильно.
Цитата Сообщение от Evg Посмотреть сообщение
Человек пришёл с конкретным заданием из школы или из института,
Не факт, может и на собеседовании спросили. Я остаюсь при своем мнении.
Я не хочу спорить, просто хочу объяснить ТСу, что так не нужно делать. Дело в том, что если он разберется в вашем приме и начнет его использовать на практике, то у него появятся проблемы (надеюсь вы не злоупотребляете такими вещами, как reinterpret_cast).
Давайте закроем эту тему.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 22:40     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число
Еще ссылки по теме:

Написать программу, которая принимает целое положительное число и выводит на экран: C++
C++ Написать функцию atoi(), которая принимает параметр - строку цифр и возвращает соответствующее ей целое
160 битное значение, представляющее целое число, конвертировать в string в десятичном представлении C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
06.12.2012, 22:40     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #13
Цитата Сообщение от go Посмотреть сообщение
а потом бац и при переносе на другую платформу все скомпилится, но отработает не правильно
Прикол в том, что переноса на другую платформу не будет, т.к. программа будет выброшена через 5 минут после сдачи зачёта/экзамена

Цитата Сообщение от go Посмотреть сообщение
Не факт, может и на собеседовании спросили
Ну-ну...

Цитата Сообщение от go Посмотреть сообщение
Я не хочу спорить, просто хочу объяснить ТСу, что так не нужно делать
Так-то оно так. Только вот с таким же успехом можно первокласснику рассказывать про квантовую физику. Если у человека возникают затруднения с подобной задачей, то он явно не готов к вопросам переносимости кода. Тем более, что в ближайшие очень много лет размер short'а и int'а на обычных (не dsp и прочие специализированные) меняться не будет (потому что меняться попросту некуда)
Yandex
Объявления
06.12.2012, 22:40     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число
Ответ Создать тему

Метки
операции, Побитовые
Опции темы

Текущее время: 10:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru