|
Smart is the new Sexy
32 / 32 / 1
Регистрация: 29.12.2008
Сообщений: 109
|
||||||
Побайтовый вывод значения типа double03.01.2009, 14:40. Показов 10839. Ответов 12
Метки нет (Все метки)
Есть решение задачи побайтового вывода значения типа double на экран. Объясните плиз каким образом это происходит. В частности функция: show_bits() и что записывается в массив С.
Вот собственно код:
0
|
||||||
| 03.01.2009, 14:40 | |
|
Ответы с готовыми решениями:
12
Ошибка вывода значения 0 типа double
печать значения типа double в обычной- десятичной форме. |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 03.01.2009, 14:50 | |
|
В коде выше я не вижу, что в С вообще что-то пишется. Там будет просто мусор.
А чтобы узнать, что происходит в show_bits тебе надо почитай про битовые операции в данном случае применяется "и".
0
|
|
|
Smart is the new Sexy
32 / 32 / 1
Регистрация: 29.12.2008
Сообщений: 109
|
|
| 03.01.2009, 15:07 [ТС] | |
|
Операцию "и" я положим знаю, но принцип вот этого вывода мне не понятен. Ведь там даже есть строка i & c[j]. Что оно дает я так и не понял. Может все-таки кто либо объяснит?
Добавлено через 10 минут 39 секунд Ведь у нас в С действителньо ничего не кидается.... Что же нам дает i & c[j]. При чем если меняешь посылаемое значение в объект, т.е. d, то результаты изменяются....
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 03.01.2009, 15:19 | |
|
У тебя union. Значит данные располагаются в памяти по одному адресу
я думал ты догадаешься.Дает тебе определить 1 там, или 0.
0
|
|
|
Smart is the new Sexy
32 / 32 / 1
Регистрация: 29.12.2008
Сообщений: 109
|
|
| 03.01.2009, 15:24 [ТС] | |
|
Чета я совсем туплю.... Блин... Все равно не могу понять как оно это осуществляет. Ведь в массиве С будет мусор... Такс...
Мы посылаем в d число... У нас есть массив, который по тмоу же адресу, значит число d будет в этом же массиве что ли?... НЕ догоняю, почитал про битовые операции, понял как они действуют, но этого алгоритма так и не понял.... =(
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 03.01.2009, 15:32 | ||
Ну, если не понял, то боюсь, что это тяжко ![]() Посмотри на число 128 в двоичной системе. одна единица "справа". А потом мы ее смещаем: i>>=1) А потом проверяем битовой операцией, че у нас хорошего. Потом снова смещаем, чтобы проверить следующий бит... P. S. толку не будет, если все разжевать. Столбиком напиши свои числа в двоичной системе и сам считай. Тогда ты поймешь как работает код.
1
|
||
|
Smart is the new Sexy
32 / 32 / 1
Регистрация: 29.12.2008
Сообщений: 109
|
|
| 03.01.2009, 16:01 [ТС] | |
|
Такс... Чтоб закрепить.
![]() Получается что при передаче числа в d, оно автоматом получаеться и в массиве, так как при использовании объединения у нас адрес тот же самый. Число double у нас занимает 8 байт. Соответственно в массиве и будет записано 8 байт. i у нас в двоичной системе при первом выполнении цикла равно 10000000. и мы используем битовуб операцию И... значит: c[j] - там будет первый байт числа double. i = 10000000 Каждый бит из 8-ми проведет операцию, но так как единица у нас слева стоит, то мы проверим только этот бит на наличие единицы. Затем цикл прогоняется 8 раз, какждый раз сдвигая единицу вправо. так мы получаем один байт... и там прогоням и выводим каждый байт. Я правильно понял принцип работы?
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 03.01.2009, 16:09 | |
|
Да, принцип работы понял верно.
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 04.01.2009, 06:56 | ||
0
|
||
|
Smart is the new Sexy
32 / 32 / 1
Регистрация: 29.12.2008
Сообщений: 109
|
|
| 04.01.2009, 14:39 [ТС] | |
|
accept, извини, но америку не открыл =)
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 04.01.2009, 14:42 | |
|
accept, да, мы в курсе, как ни странно. Тему закрываю.
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||||||||||||||||||||||
| 06.01.2009, 00:15 | ||||||||||||||||||||||||||
вообще при смещении это не 10000000, а 0000000010000000 операция & - побитовое умножение (что будет если ноль умножить на еденицу ?) операция | - побитовое сложение (что будет если к нулю прибавить еденицу ?) в логических операциях 1*1, 1+1 = 1 (а не два) таким образом, если у тебя старший байт (это левый байт младшие правые) например представляет из себя 10101001 это выглядит как
каждый раз они умножаются и все нули из маски (маска это число 128 сначала) съедают все нули и еденицы из проверяемого байта, а еденица из маски не съедает ни нуль ни еденицу, но её съедает ноль из проверяемого байта если он там есть
это всё что угодно кроме лжи а что такое ложь там же ? это только ноль (и все его виды NULL nullptr и прочие) поэтому когда еденица в маске не съедается нулём, там остаётся не еденица а какая-то из степеней двойки, 128 64 32 и тд, но все они считаются истиной, т.к. истиной считается всё даже отрицательные и дробные числа кроме лжи, а ложь только ноль; выводится еденица на экран, а при лжи выводится ноль на экран
2
|
||||||||||||||||||||||||||
|
6 / 6 / 1
Регистрация: 05.01.2009
Сообщений: 82
|
|
| 06.01.2009, 12:33 | |
|
Однако & это еще побитовое И (00101100 & 10010110 = 00000100)
| это побитовое ИЛИ (00101100 | 10010110 = 10111110)
1
|
|
| 06.01.2009, 12:33 | |
|
Помогаю со студенческими работами здесь
13
Вывод числа типа double как есть Сделать вывод типа float в шаблоне вместо double
Аргумент типа double несовместим с параметром типа double* Аргумент типа double несовместим с параметром типа double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|