Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/59: Рейтинг темы: голосов - 59, средняя оценка - 4.54
Romot-t
1

Деление на 2^16

19.05.2012, 18:22. Просмотров 10710. Ответов 25
Метки нет (Все метки)

Нужно разделить 2х байтовое число на 2^16, очевидно, что делитель больше и получиться дробное число, но как это посчитать на атмеге я так и не вдупляю, поэтому прошу вас о помощи, уважаемые комрады)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2012, 18:22
Ответы с готовыми решениями:

Задача про деление яблок (целочисленное деление)
Ребят,помогите с задачкой,как написать input.txt и output.txt? Помогите решить задачу. C++....

Умножение, деление и деление с остатком
Рассмотрим эти операции на примере. static void Main() { int i = 100, j = 15; double a =...

Деление знаковых чисел с выводом ошибки "Деление на ноль"
Собственно поставили передо мной задачу - написать прогу деления двух чисел, причем что бы...

Деление на 6
Люди, не могу понять, неужели я такой никчема? Задача: Заданы N целых чисел. Определить сумму...

25
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
19.05.2012, 18:28 2
А что потом будет происходить с результатом? Запись в память? Вывод на дисплей? Дальнейший матан?
0
0 / 0 / 0
Регистрация: 17.02.2010
Сообщений: 150
19.05.2012, 19:00 3
Вопрос в том какая нужна точность т.к в принципе если делить флоат на флоат, то результат ты получишь, вопрос только какая погрешность будет.
0
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
19.05.2012, 19:05 4
Деление многоразрядных чисел - http://controllersystems.som/books/p...yx-chisel.html
0
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 37
19.05.2012, 19:38 5
сдвинуть вправо на 16 разрядов :)

все твое двухбайтное число и будет дробной частью
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
19.05.2012, 20:04 6
А в коде коммент:

//Сейчас будем делить some_word на 65536
//Все, поделили. Целая часть = 0, а дробная находится в some_word
0
0 / 0 / 0
Регистрация: 07.04.2011
Сообщений: 663
19.05.2012, 20:13 7
Уха хаха
0
Romot-t
19.05.2012, 21:39 8
dsodir, потом дальнейшие расчеты,
общая формула: -46,85+175,72*(T/2^16)
где Т - код температуры с датчика(уже считан и хранится в СОЗУ),
формула переводит в градусы С.
Датчик SHT21. Результат собираюсь выводить на дисплей. Точность до целых градусов нужна.
Сдвиг просто вправо 16раз бред, самому такая мысль сперва пришла)
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 37
19.05.2012, 21:55 9
Цитата Сообщение от Romot-t
Нужно разделить 2х байтовое число на 2^16, очевидно, что делитель больше и получиться дробное число, но как это посчитать на атмеге я так и не вдупляю, поэтому прошу вас о помощи, уважаемые комрады)
какой вопрос, такой и ответ. :)
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
19.05.2012, 21:56 10
хм. велосипед изобретать обязательно?
навскидку в местном сообществе:
http://we.iosyitistromyss.ru/part/datch ... sht21.html
http://we.iosyitistromyss.ru/STM8/izmer ... sht21.html
ну и дальше по тегу "sht21"
да и вообще этот датчик уже раскурен под все платформы давно уже...
0
Romot-t
19.05.2012, 22:05 11
Первую статью я давно раскурил вдоль и поперек, а вот вторую не видел, за что благодарю, буду разбирать.
Тем не менее, кажется, что не зря производитель упростил эту формулу, оставив в делителе 2^16, должен быть какой то простой способ деления на такие числа.
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 37
19.05.2012, 22:07 12
Цитата Сообщение от Romot-t
Тем не менее, кажется, что не зря производитель упростил эту формулу, оставив в делителе 2^16, должен быть какой то простой способ деления на такие числа.
)))) извиняюсь конечно, но я ща уписаюсь от смеха ))))
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,861
19.05.2012, 22:10 13
та да. слов нет... )))

Цитата Сообщение от Romot-t
Тем не менее, кажется, что не зря производитель упростил эту формулу, оставив в делителе 2^16, должен быть какой то простой способ деления на такие числа.
угу. есть. сдвиг называется.
придумаешь еще проще - свисти. ;)
могу подсказать простой способ деления на 2^8 - просто чтение старшего байта. ))))
ну и так дальше по границам слова/байта... ;)
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
19.05.2012, 22:13 14
Цитата Сообщение от shurup
все твое двухбайтное число и будет дробной частью
Кстати, обратите внимание - операция деления занимает 0 тактов :)
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
20.05.2012, 13:02 15
Цитата Сообщение от Romot-t
общая формула: -46,85+175,72*(T/2^16)
Точность до целых градусов нужна.
(17572L * T - 307036160L) >> 16
0
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
20.05.2012, 13:32 16
+ Десятичную точку не забыть поставить в нужном месте.
0
Romot-t
20.05.2012, 14:07 17
Цитата Сообщение от shurup
все твое двухбайтное число и будет дробной частью
только как потом обозначить, что это дробная часть. Пишу на асме.
0 / 0 / 0
Регистрация: 04.05.2009
Сообщений: 37
20.05.2012, 14:11 18
это ответ на твой вопрос (причем правильный). телепатов, которые будут додумывать за тебя здесь нет.
а по второму вопросу тебе уже ответили выше. Если сложно работать с "запятыми", то надо домножить все на коэффициент, так чтобы все привести к целым с нужной точностью.

а запятые будешь расставлять при выводе на дисплей
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
20.05.2012, 15:19 19
Цитата Сообщение от STT
+ Десятичную точку не забыть поставить в нужном месте.
Просили целые градусы. Точка не нужна.

Единственное дополнение - если нужно производить округление, а не отбрасывание дробной части, то (17572L * T - 307003392L) >> 16
0
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
20.05.2012, 15:27 20
Видимо, буква "L" после чисел имеет некое значение, но я с такой записью не сталкивался. Вы умножили дробные числа на 100, чтобы получить целые числа, и результат, соответственно, в 100 раз больше искомого. Чтобы не делить я и предложил поставить десятичную точку в нужном месте на индикаторе.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2012, 15:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Деление на 0
Здравствуйте. Есть массив , но там появляется ошибка деление на ноль, это из за того что значение i...

Деление
#include <iostream> #include <cstdlib> #include <conio.h> using namespace std; char...

Деление на 5
Дано число в шестнадцатеричной системе счисления. Число может быть очень большое. Требуется...

Деление a/b
Добрый день. Сразу хочу спросить как правильно называется этот тип языка? код: mvi a,01;регистр...


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

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

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