0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
1

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

30.10.2012, 15:28. Показов 2908. Ответов 12

Студворк — интернет-сервис помощи студентам
Помогите написать программу, использующую функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число, состоящее из младших 8 бит старшего слова и старших 8 бит младшего слова. Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2012, 15:28
Ответы с готовыми решениями:

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

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

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

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

12
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12239 / 7406 / 1736
Регистрация: 25.07.2009
Сообщений: 13,596
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
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
30.10.2012, 17:20  [ТС] 3
Спасибо большое. Выручил.
0
Evg
Эксперт CАвтор FAQ
21275 / 8292 / 637
Регистрация: 30.03.2009
Сообщений: 22,656
Записей в блоге: 30
30.10.2012, 17:27 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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

C
unsigned short middle (int value) { return value >> 8; }
лишние биты отрежутся за счёт преобразования к short'у
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12239 / 7406 / 1736
Регистрация: 25.07.2009
Сообщений: 13,596
30.10.2012, 17:51 5
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
кстати, да.
0
Эксперт С++
3224 / 1751 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
30.10.2012, 18:54 6
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
0
Evg
Эксперт CАвтор FAQ
21275 / 8292 / 637
Регистрация: 30.03.2009
Сообщений: 22,656
Записей в блоге: 30
30.10.2012, 19:10 7
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, по стандарту размер short не может быть меньше 16, но больше можно.
Мы говорим не о сферическом коне в вакууме, а о конкретной задаче в конкретных условиях. И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а. Хотя в общем случае твоё замечание, безусловно, верное
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
06.12.2012, 20:24 8
Цитата Сообщение от Evg Посмотреть сообщение
И я дико сомневаюсь, что у него какой-то экзотический случай с размером short'а.
Откуда Вы это знаете?
Цитата Сообщение от Evg Посмотреть сообщение
лишние биты отрежутся за счёт преобразования к short'у
Зачем такое писать.
0
Evg
Эксперт CАвтор FAQ
21275 / 8292 / 637
Регистрация: 30.03.2009
Сообщений: 22,656
Записей в блоге: 30
06.12.2012, 20:56 9
Цитата Сообщение от go Посмотреть сообщение
Откуда Вы это знаете?
Ты со мной не согласен?

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

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

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

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

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

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru