![]() |
|
Модераторы: bsa |
![]()
|
|
| Mikron |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
Помогите найти ошибку
в функцию передается два массива, в одном значения пяти параметров, а во втором количество значений допустим
число = parametrs[0][0]*10+parametrs[0][1]*1=50 нужно записать это число в двоичном виде в файл
пробую для 50
вопрос в том, почему в первой строчке получается 00010011001000...00110010 хотя должно быть00010000000000...00110010 Это сообщение отредактировал(а) Mikron - 8.2.2010, 12:37 |
||||||
|
|||||||
| sQu1rr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
Если, честно мне лень читать код
Вам нужно на C или С++? Пожалуйста опишите поподробнее что ДОЛЖНО получится... Я ничего не понимаю в условии, и уж темболее в ответе. 50 в 2чной = 110010. Что вы хотите от программы. Странный перевод в двоичную систему... Вообщем опишите все попобдробнее, тогда я постораюсь помочь. И да...
Вижу один двумерный массив с 10 элементами первого элемента массива и 1й элемент второго массива ( Псевдокод? массивы уже созданы? ) Вообщем напишите так чтобы было понятно Это сообщение отредактировал(а) sQu1rr - 9.2.2010, 18:20 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
да тут вообще весело, товарищ даже не знает, сколько бит в лонге. В итоге использует число 40. Ладно, я бы понял, если бы было 0x40 (64)...
Короче, Mikron, ошибка в алгоритме. Исправлять нужно его. А так же необходимо пополнить знания по поводу количества разрядов в стандартных типах данных. |
|||
|
||||
| Mikron |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
спасибо за помощь
я использую число 40, потому что у меня максимальное возможное значение числа znach 9999999999, то есть 5 байтов, то есть строка должна состоять из сорока битов для такого десятизначного числа использую тип long есть значение, диапазон которого от 0 до 9999999999 значение представлено в виде массива к примеру 325 это mass[10]={3,2,5,0,0,0,0,0,0,0} нужно это значение записать в файл в двоичном представлении при том, что в строке должо быть 40 бит для 325 ожидаю запись в файл 0000000000000000000000000000101000101 использую Си Это сообщение отредактировал(а) Mikron - 11.2.2010, 16:04 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Сначала приведи свой массив к типу long (сумма mass[i]*pow(10, i), где 0<=i<10 ). Затем с помощью метода сдвига маски и побитовой операции "И", переведи число в двоичную систему.
|
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
В лонг не поместится больше 2^32, не вместит требуемое чило... Можно привести к __int64 например Перевод числа в двоичную систему:
+ добавить столько нулей сколько нужно, чтобы получилось 40 символов Это сообщение отредактировал(а) sQu1rr - 11.2.2010, 18:11 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
А сколько бит в int ? Это сообщение отредактировал(а) Dem_max - 12.2.2010, 10:28 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
sizeof(int)*8
На 16-ти разрядных машинах - 16 На 32-х и 64-х разрядных - 32. |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
На 16-ти разрядных машинах - 16 На 32-ти разрядных машинах - 32 На 64-ти разрядных машинах - 64 и вообще надо пользоваться sizeof(int) -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Хотя не исключаю, что существуют архитектуры, где результат будет другой. Но мне они неизвестны. |
||||
|
|||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
вот от того что тебе не известны и нужно пользоваться sizeof
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Dem_max, как ты мог заметить, в исходном посте я сразу использовал выражение sizeof(int)*8. И привел результаты для наиболее распространенных платформ. Не цепляйся понапрасну.
Это сообщение отредактировал(а) bsa - 12.2.2010, 12:46 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Я не цепляюсь. Я хочу сказать топикстартеру что нужно делать правильно, а не как он.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |