Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
batra
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
#1

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

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

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

Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с таким номером
1. Создайте функцию, которая принимает в качестве аргумента целое число и...

Написать функцию, которая принимает в качестве аргумента целое число по ссылке, и увеличивает его на единицу
Dev C++

160 битное значение, представляющее целое число, конвертировать в string в десятичном представлении
Есть 160 битное значение представляющее целое число, необходимо конвертировать...

Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз
задание такое Составить функцию, которая, получив целое число определяет,...

Написать функцию atoi(), которая принимает параметр - строку цифр и возвращает соответствующее ей целое
Это оказалось мне не по-силам, поэтому прошу помощи,господа:) Напишите...

Написать программу, которая принимает целое положительное число и выводит на экран:
Помогите пожалуйста решить задачу с оператором switch . Написать программу,...

12
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
30.10.2012, 15:42 #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 на С++ сами перепишите, если принципиально, функция никак не изменится.
1
batra
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
30.10.2012, 17:20  [ТС] #3
Спасибо большое. Выручил.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
30.10.2012, 17:27 #4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Достаточно написать:

C
unsigned short middle (int value) { return value >> 8; }
лишние биты отрежутся за счёт преобразования к short'у
2
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
30.10.2012, 17:51 #5
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
кстати, да.
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
30.10.2012, 18:54 #6
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
30.10.2012, 19:10 #7
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
Мы говорим не о сферическом коне в вакууме, а о конкретной задаче в конкретных условиях. И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а. Хотя в общем случае твоё замечание, безусловно, верное
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
06.12.2012, 20:24 #8
Цитата Сообщение от Evg Посмотреть сообщение
И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а.
Откуда Вы это знаете?
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Зачем такое писать.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
06.12.2012, 20:56 #9
Цитата Сообщение от go Посмотреть сообщение
Откуда Вы это знаете?
Ты со мной не согласен?

Цитата Сообщение от go Посмотреть сообщение
Зачем такое писать
Напиши так, как считаешь правильным
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
06.12.2012, 21:11 #10
Цитата Сообщение от Evg Посмотреть сообщение
Ты со мной не согласен?
Есть стандарт, согласно которому и необходимо писать. Если вы пишете под какую-то именно платформу, то зачем писать непереносимый код. Это очень плохо, и в будущем могут быть пролема, да и есть вероятность, что у ТСа он отработает не правильно (фифти фифти, как говорят).
Цитата Сообщение от Evg Посмотреть сообщение
Напиши так, как считаешь правильным
Мы не ведем речь, как мне нужно написать, а обсуждаем ваше предложение, и выявляем ваши ошибки.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
06.12.2012, 21:44 #11
Цитата Сообщение от go Посмотреть сообщение
Есть стандарт, согласно которому и необходимо писать. Если вы пишете под какую-то именно платформу, то зачем писать непереносимый код. Это очень плохо, и в будущем могут быть пролема, да и есть вероятность, что у ТСа он отработает не правильно (фифти фифти, как говорят)
Человек пришёл с конкретным заданием из школы или из института, при этом не умеет программировать. О какой совместимости может идти речь в этих условиях?

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

Добавлено через 56 секунд
Цитата Сообщение от go Посмотреть сообщение
Если вы пишете под какую-то именно платформу, то зачем писать непереносимый код
Наличие в программе базовых типов Си автоматически делает любую программу непереносимой
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
06.12.2012, 21:55 #12
Цитата Сообщение от Evg Посмотреть сообщение
uint16
Одно использовать этот тип где четко видно, другое писать как у Вас, когда все время будет работать правильно, а потом бац и при переносе на другую платформу все скомпилится, но отработает не правильно.
Цитата Сообщение от Evg Посмотреть сообщение
Человек пришёл с конкретным заданием из школы или из института,
Не факт, может и на собеседовании спросили. Я остаюсь при своем мнении.
Я не хочу спорить, просто хочу объяснить ТСу, что так не нужно делать. Дело в том, что если он разберется в вашем приме и начнет его использовать на практике, то у него появятся проблемы (надеюсь вы не злоупотребляете такими вещами, как reinterpret_cast).
Давайте закроем эту тему.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,441
Записей в блоге: 30
06.12.2012, 22:40 #13
Цитата Сообщение от go Посмотреть сообщение
а потом бац и при переносе на другую платформу все скомпилится, но отработает не правильно
Прикол в том, что переноса на другую платформу не будет, т.к. программа будет выброшена через 5 минут после сдачи зачёта/экзамена

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

Цитата Сообщение от go Посмотреть сообщение
Я не хочу спорить, просто хочу объяснить ТСу, что так не нужно делать
Так-то оно так. Только вот с таким же успехом можно первокласснику рассказывать про квантовую физику. Если у человека возникают затруднения с подобной задачей, то он явно не готов к вопросам переносимости кода. Тем более, что в ближайшие очень много лет размер short'а и int'а на обычных (не dsp и прочие специализированные) меняться не будет (потому что меняться попросту некуда)
0
06.12.2012, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 22:40
Привет! Вот еще темы с решениями:

Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым.
Создайте логическую функцию, которая принимает в качестве аргумента целое число...

Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно простым
3. Создайте логическую функцию, которая принимает в качестве аргумента целое...

Напишите функцию, получающую целое значение, которая возвращает число с обращенным порядком цифр
1. Напишите функцию, получающую целое значение, которая возвращает число с...

Создайте логическую функцию, которая принимает в качестве аргумента целое число и проверяет, является ли оно степенью двойки
4. Создайте логическую функцию, которая принимает в качестве аргумента целое...


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

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

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