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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
batra
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
#1

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

30.10.2012, 15:28. Просмотров 888. Ответов 12

Помогите написать программу, использующую функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число, состоящее из младших 8 бит старшего слова и старших 8 бит младшего слова. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 15:28     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число
Посмотрите здесь:
C++ Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с таким номером
160 битное значение, представляющее целое число, конвертировать в string в десятичном представлении C++
C++ Написать функцию atoi(), которая принимает параметр - строку цифр и возвращает соответствующее ей целое
Написать программу, которая принимает целое положительное число и выводит на экран: C++
C++ Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым.
Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым C++
C++ Напишите функцию, получающую целое значение, которая возвращает число с обращенным порядком цифр
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт CЭксперт С++
9468 / 5481 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
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
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
30.10.2012, 17:27     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Достаточно написать:

C
unsigned short middle (int value) { return value >> 8; }
лишние биты отрежутся за счёт преобразования к short'у
easybudda
Эксперт CЭксперт С++
9468 / 5481 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
30.10.2012, 17:51     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #5
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
кстати, да.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
30.10.2012, 18:54     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #6
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
30.10.2012, 19:10     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #7
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
Мы говорим не о сферическом коне в вакууме, а о конкретной задаче в конкретных условиях. И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а. Хотя в общем случае твоё замечание, безусловно, верное
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
06.12.2012, 20:24     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #8
Цитата Сообщение от Evg Посмотреть сообщение
И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а.
Откуда Вы это знаете?
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Зачем такое писать.
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
06.12.2012, 20:56     Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число #9
Цитата Сообщение от go Посмотреть сообщение
Откуда Вы это знаете?
Ты со мной не согласен?

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

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

Добавлено через 56 секунд
Цитата Сообщение от go Посмотреть сообщение
Если вы пишете под какую-то именно платформу, то зачем писать непереносимый код
Наличие в программе базовых типов Си автоматически делает любую программу непереносимой
go
Эксперт C++
3586 / 1366 / 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++ Написать функцию, которая принимает число, а возвращает его факториал
C++ Написать объявление функции, возвращающую целое число и принимающую указатель на целое число
Функция которая принимает целое беззнаковое число. C++
C++ Как написать рекурсивную функцию,которая считает X^n , где n это число целое >=0

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

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

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

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

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