Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 586
от 07.07.2003, 09:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 3652
Отправлено ответов: 10712
Активность: 293.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

masquer
Статус: Профессиональный
Общий рейтинг: 137.05
[Подробней >>]
Denis
Статус: Начальный
Общий рейтинг: 101.84
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.35
[Подробней >>]
 
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 120.9
URL: Методы оптимизации работы ПК
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 112.23
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 107.74
URL: Beeblebrox / TMA HomePage
[Подробней >>]
 
Алексей
Статус: Начальный
Общий рейтинг: 109.57
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.13
URL: Программирование
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 113.8
[Подробней >>]
 
Lynx
Статус: Опытный
Общий рейтинг: 121.04
Телефон: (8442) 750522
[Подробней >>]
Евгений Иванов
Статус: Начальный
Общий рейтинг: 131.7
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 122.9
[Подробней >>]
 
Andrew Vext
Статус: Опытный
Общий рейтинг: 105.3
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 112.27
[Подробней >>]
Zedr0n
Статус: Начальный
Общий рейтинг: 107.83
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 3616. Доброе время суток, уважаемые эксперты. OS: Win32 (ядро NT) Вопрос: Как освободить фай... (ответов: 1)
Вопрос № 3617. Привет, эксперты! В прилагаемой ниже программе "выводится" первый элемент массива, "в... (ответов: 10)
Вопрос № 3618. Ты смотри... baldr удивил, конечно, удивил. И верно - было, такое было. Хотя, впрочем, вам на такие ... (ответов: 4)
Вопрос № 3619. Здравствуйте, уважаемые эксперты! Написал программу(в приложении). Должна переименовывать temp.txt в... (ответов: 3)
Вопрос № 3620. Вот именно. Давайте завязывайте ваш флейм, борцы за чистоту интернета. Были тут раньше такие. Дигит,... (ответов: 2)
Вопрос № 3621. Здравствуйте, Эксперты. Тут вот сразу куча вопросов: 1. Есть какая-н. функция, которая конвертит NT-... (ответов: 1)
Вопрос № 3622. Приветствую вас ЭксперТы. У меня есть вопрос. Недавно книжку читал заумную про компы. Вней одна из г... (ответов: 6)

Вопросов: 7, ответов: 27


 Вопрос № 3616

Доброе время суток, уважаемые эксперты.
OS: Win32 (ядро NT)
Вопрос: Как освободить файл, если он занят другим приложением/пользователем? Сохранность данных в файле, не требуется (все равно убивать).



Вопрос отправлен: 02.07.2003, 15:23
Отправитель: Gibbel

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Здравствуйте, Gibbel!
Только через драйвер. Посмотри на sysinternals программу handle.exe, у нее в ресурсах драйвера сидят, которые она запускает и перечисляет владельцев файлов.

Ответ отправлен: 02.07.2003, 17:54
Отправитель: masquer


 Вопрос № 3617

Привет, эксперты!
В прилагаемой ниже программе "выводится" первый элемент массива, "выводится" - в кавычках, так как он криво выводтся, то есть выводится, но не то!! В книге В. Юрова похожий пример без проблем работает (правда сам его не компилировал!). Командой mov dx,mas[si*2] я обращаюсь к третьему элементу массива, затем прибавляю 30h, т.е. на экран должна быть выведена тройка, а выводится не то!! В TD при отладке после этого mov-a в dx находится адрес элемента массива, а не он сам!, хотя в вышеуказанной книге написано, что должен быть сам элемент!
Да, еще в том книжном примере, вместо si используется esi, хотя программа 16-битная, досовская!! Я пишу si, и tasm ругается но компилирует, а если пишу esi, то tlink глохнет!, че делать-то, книга-то вроде авторитетная!!
С уважением Dick Wint.


Приложение:


Вопрос отправлен: 02.07.2003, 15:39
Отправитель: Dick Wint

[Следующий вопрос >>] [Список вопросов]

Отвечает Denis

Здравствуйте, Dick Wint!
Нада инить регистр DS
Расположи в начале кода
push cs
pop ds
Удачи

Ответ отправлен: 02.07.2003, 15:52
Отправитель: Denis


Отвечает Ayl

Здравствуйте, Dick Wint!
Ну давай по порядку. Хотя какой тут порядок!
1. Массив mas у тебя описан как байтовый. Зачем тогда используется умножение на 2? Это надо делать только для двухбайтовых значений.
2. Числа из массива загружаешь в словный регистр DX, а надо просто в DL (см. п.1).
3. Адресация с множителем может выполняться только с 32-разрядными регистрами, а не с 16-разрядными, как у тебя. Кстати, использование 32-разрядных регистров в DOS-программах вполне законно.
4. Значение регистра SI ты неинициализируешь. Для дебагера это неважно, а вот под DOS у тебя при старте программы в регистре SI будет значение 100h. Ну и какой элемент ты вытащишь?


Ответ отправлен: 02.07.2003, 16:52
Отправитель: Ayl


Отвечает Tigran K. Kalaidjian

Здравствуйте, Dick Wint!
1. В DX должно быть не число, а _смещение_ от начала сегмента, по которому лежит то число, которое нам надо вывести.
Для Вашей цели использование ah=02h\int21h неудобно.
Используйте int 29h (работающая программа в приложении)
Перед вызовом в al следует посадить ASCII-код символа
2. Двойка перед номером элемента не нужна, т.к. Вы используете массив из байтов, а не слов(как у Юрова).
3. Программа с int21h все равно не работала бы, ибо Вы не инициализировали сегмент данных.
4. Работа с 32-битными регистрами возможна, т.к. включены инструкции .486
5. А Вы хотя бы попробовали перепечатать, что ли из Юрова полностью этот пример, а то ведь нехорошо как-то - обвиняете автора...

Приложение:

Ответ отправлен: 02.07.2003, 19:24
Отправитель: Tigran K. Kalaidjian


Отвечает baldr

Добрый день, Dick Wint!
Мда... В si у тебя ничего нет, вернее - неизвестно что находится, а ты по нему адресуешь...
Поставь в начале:
mov si, offset mas+2
И все должно получиться

Ответ отправлен: 02.07.2003, 17:08
Отправитель: baldr


Отвечает Beeblebrox

Добрый день, Dick Wint!
А чему равно si?

Ответ отправлен: 02.07.2003, 17:04
Отправитель: Beeblebrox


Отвечает Алексей

Доброе время суток, Dick Wint!
Ну, у меня вообще-то она вообще не компилируется!
Нужно заменить строку mov dx,mas[si*2] на mov dl,mas[si+2]
И ещё! В SI у вас при загрузке находится 100h, => нужно инициализировать SI, например обнулить.
Использование 32-х битных регистров под DOS реализуется,если установлен ключ линкера (для TASM - /3)
Исправленный код в приложении.

Приложение:

Ответ отправлен: 02.07.2003, 17:03
Отправитель: Алексей


Отвечает Bob Johnson

Доброе время суток, Dick Wint!
В 16-разрядном режиме нельзя умножать значения регистров при адресации! В 32-х можно, поэтому там и работает.
Делай так:
mov ah, 2
shl si, 1
mov dl, [offset mas + si]
add dl, 30h
int 21h
...

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 03.07.2003, 00:17
Отправитель: Bob Johnson


Отвечает ASMодей

Добрый день, Dick Wint!
Уж не знаю, что ты прочитал в Юрове, но строка
mov dx,mas[si*2]
является просто образцом некорректности.
1. Ты записываешь в 16-битный регистр DX элемент 8-битного массива mas. Поэтому тасм и ругается (несоответствие типов). Тут нужно или вместо регистра DX использовать регистр DL, или писать mov dx,word ptr...
2. Регистр SI здесь использовать не только не нужно, но и неправильно, так как ты уже адресуешься к массиву с помощью переменной mas. К тому же регистр SI не был в начале проинициализирован, поэтому выражение SI*2 - это неопределенное число и обратишся ты по этому адресу неизвестно куда. Здесь тоже есть два выхода:
или mov dl,mas[2]
или mov esi,offset mas
mov dl,[esi*2]
Регистр ESI используется здесь потому, что индексирование по 16-разрядным регистрам недопустимо.
Если так уж нужно использовать регистр SI, то можно сделать так:
mov si,offset mas
mov dl,[si+2]
или так:
sub si,si
mov dl,mas[si+2]


Ответ отправлен: 03.07.2003, 08:09
Отправитель: ASMодей


Отвечает Lynx

Добрый день, Dick Wint!
1. А ты уверен, что во время выполнения si у тебя равен тому, чему надо. Чёто ты его не инициализируешь.
2. Я не уверен (а проверять лень) что в твоём случае надо массив описывать через db, а не через dw.


Ответ отправлен: 03.07.2003, 14:54
Отправитель: Lynx


Отвечает Евгений Иванов

Добрый день, Dick Wint!
Попробуй так:
shl si, 1
mov dx,[si+mas]
или так
and esi, 0FFFFh
mov dx,[esi*2+mas]
Но по моему, надо так:
mov dl,[si+mas]


Ответ отправлен: 04.07.2003, 00:04
Отправитель: Евгений Иванов


 Вопрос № 3618

Ты смотри... baldr удивил, конечно, удивил. И верно - было, такое было. Хотя, впрочем, вам на такие вопросы только и отвечать. А что-то я вашего архивариуса-валентинчика не вижу? Что он в той же ж..., что и Калашников? Довели?
Маскуеру - да было бы кому расслаблять, а то все только языками бы... да и то не в нужном месте...
baldr - и сколько ж тут старичков осталось? Ну, БрокенСворда я уже слышала, хотя он, предатель, еще и на wasme тусуется. А кто еще есть?
И чтой-то, ребята, у вас у всех "благодарностей" по нулям? Что, не благодарят,гады, за ваши ответы? Хотя и "критики" тоже никакой нет. Так может вы НИКАКИЕ ???



Вопрос отправлен: 02.07.2003, 17:36
Отправитель: Наталья Березовец (stalmk@bk.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Tigran K. Kalaidjian

Здравствуйте, Наталья Березовец!
Не, я так не играю...
Пробовал не отвечать, но так нельзя же. Вы, барышня,(подчеркиваю жирной двойной волнистой линией 8-D~~ ) если призываете писать Вам на мыло, то и пишите также на мыло своё негодование, а то скоро, чувствую придётся ящик разгребать от ваших "вопросов". Зачем же писать свои впечатления всем экспертом сразу? Хотя Вам, видимо, нравится, когда на Ваш вопрос отвечает сразу СТОЛЬКО экспертов =)
> И чтой-то, ребята, у вас у всех "благодарностей"
> по нулям? Что, не благодарят,гады, за ваши ответы?
А как это сделаешь, сервиса такого нет... Даже при полном желании не сможете.
> Хотя и "критики" тоже никакой нет.
По той же причине... Хотя по мылу, хоть отбавляй и первого, и второго.
> Так может вы НИКАКИЕ ???
Таки Вы бы и не писали сюда в таком случае, значит мы какие-то, раз привлекли Ваше внимание...(хотя это и не наша ф-ция)

Ответ отправлен: 02.07.2003, 19:59
Отправитель: Tigran K. Kalaidjian


Отвечает masquer

Ну, дык поди девочка взрослая уже, пора найти - кому расслаблять, а то на одном языке далеко не уедешь, тем более если не в нужном месте. Ежели б была тут рассылка по виртуальным перверсиям - вот бы мы благодарностей нахватались бы, а так по нулям все... Ладно, я завязываю этот флейм, думаю, и другим стоит ;)

Ответ отправлен: 02.07.2003, 18:39
Отправитель: masquer


Отвечает baldr

Доброе время суток, Наталья Березовец!
Флейм, типа, рулит... :-/
Архивариус сгинул уже давно... :( Пытался я выяснить куда, но бесполезно.
Так что на такие вопросы, и верно, нам отвечать. Хотя, альтруизма никто не ценит, как видимо... Скорее всего, мы тут для своего удовольствия отвечаем, потому как читатели чаще флеймят, чем благодарят (намек)...
Старичков тут вполне достаточно. Хотя все равно все "предатели" - почти все тусуются и на других форумах.

Ответ отправлен: 02.07.2003, 17:50
Отправитель: baldr


Отвечает ASMодей

Здравствуйте, Наталья Березовец!
Вообще-то для подобного "общения" есть форум.

Ответ отправлен: 03.07.2003, 08:16
Отправитель: ASMодей


 Вопрос № 3619

Здравствуйте, уважаемые эксперты!
Написал программу(в приложении). Должна переименовывать temp.txt в newfile.obj . При запуске после компиляции выдаётся сообщение:
[+++++++++++++++++++++++++++]
Опущен обязательный параметр
[+++++++++++++++++++++++++++]
Что я делаю не так ?
Оба файла лежат в директории с тасмом. У Р.Брауна не нашел никаких багов для функции 56h...
Надеюсь на ваш ответ.


Приложение:


Вопрос отправлен: 02.07.2003, 18:47
Отправитель: Aram Markaryan

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Добрый день, Aram Markaryan!
Вот уж не знаю... Откомпилил сейчас у себя с помощью TASM (
tasm prog /m2 /la
tlink prog /m /s /v
), создал файл temp.txt, запустил - и все прекрасно переименовалось! Так что собака тут где-то еще порылась...
Напиши, как компилишь, какие ключи... Что используешь.
Я вообще не представляю, кто тебе это сообщение пишет...

Ответ отправлен: 02.07.2003, 19:50
Отправитель: Ayl


Отвечает Евгений Иванов

У меня всё работает.
У тебя значит не работает что-то другое, а не эта функция.
Попробовал, переименовывает. Но если файл уже есть, то не переименовывает.
Поэтому надо проверять на наличие файла второго, и удалять его.
Всё.


Ответ отправлен: 04.07.2003, 00:05
Отправитель: Евгений Иванов


Отвечает _vt

Добрый день, Aram Markaryan!
Как я не пытался, но этот код работает! Никаких сообщений!
Даже не стал лазить в Ральфа Брауна... :-)
Возможно, в текущем каталоге у вас нет файла temp.txt, или уже присутствует newfile.obj
P.S. При использовании модели памяти small у вас должен присутствовать сегмент стека (например .stack 100h), но даже без него у меня ваш код работает! :-))
P.P.S. В данной программе ключевое слово masm абсолютно ни к чему...

---===*** E-Man 1.2 - Powerful toy***===---


Ответ отправлен: 04.07.2003, 20:40
Отправитель: _vt


 Вопрос № 3620

Вот именно. Давайте завязывайте ваш флейм, борцы за чистоту интернета. Были тут раньше такие. Дигит, по-моему, и еще кто-то. А, кстати, где ваш Дрон? Или их два там было... Тоже угробили? Нехорошо, ребеята, нехорошо..



Вопрос отправлен: 02.07.2003, 19:04
Отправитель: Наталья Березовец

[Следующий вопрос >>] [Список вопросов]

Отвечает Andrew Vext

Доброе время суток, Наталья Березовец!
давайте перенесем обсуждение в какую-нибудь кафешку (как то оно уютнее будет). А то все плююются как виртуальные верблюды :-)
Королев Андрей
CCNA MCSE
vext@mail.ru

Ответ отправлен: 03.07.2003, 12:34
Отправитель: Andrew Vext


Отвечает Tigran K. Kalaidjian

Добрый день, Наталья Березовец!
> Вот именно. Давайте завязывайте ваш флейм,
> борцы за чистоту интернета
Нет, не наш, а Ваш флейм. Мое мыло открыто kalaidjian@pochtamt.ru
Я его предлагал в качестве направления для Ваших эмоций, но Вы этим не воспользовались. Значит Вам нравится выступать на публике, да и еще в рассылку попадете (оставите свой след в истории).
Но кому-кому, так не Вам указывать когда нам и чего завязывать.
Если хотите поговорить, то на RusFAQ есть еще такой сервис, как "форум", можете им воспользоваться...

Ответ отправлен: 02.07.2003, 20:00
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3621

Здравствуйте, Эксперты. Тут вот сразу куча вопросов:
1. Есть какая-н. функция, которая конвертит NT-шные пути, такие как \Device\HarddiskVolume1\Windows в нормальные?
2. Есть вирус (написан на скорую руку), записывающийся в конец PE-файла и изменяющий размер его последней секции.
Новый AddressOfEntryPoint вычисляется как VirtualAddress+SizeOfRawData последней секции.Затем Изменяются ее VirtualSize и SizeOfRawData. SizeOfImage в IMAGE_OPTIONAL_HEADER становится равным новому SizeOfRawData+VirtualAddress последней секции.
С большинством PE-файлов все нормально работает, но есть и такие, с которыми нихрена не работает.
Когда смотришь их в дизассемблере, оказывается, что адрес точки входа вычислен неправильно. Что делать?
3. Как сделать, чтобы вылез BSOD в NT (для 9x я и сам 5000 способов найду :-))?



Вопрос отправлен: 03.07.2003, 04:00
Отправитель: Marouder (marouder@list.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Добрый день, Marouder!
2. К концу последней секции? Последней секцией могут быть ресурсы, релоки, отладочная инфа - и ты к ней исполняетмый код цепляешь? Характеристики секции хоть меняешь? Оеп должен быть тогда VA + смещение в текущей секции. А "VirtualAddress+SizeOfRawData" это получается выход за пределы секции.
3. Из ринг0 разве что

Ответ отправлен: 03.07.2003, 13:23
Отправитель: masquer


 Вопрос № 3622

Приветствую вас ЭксперТы.
У меня есть вопрос. Недавно книжку читал заумную про компы. Вней одна из глав посвящана системам счисления. Целочисленные значения я переводит умею, но там такая строчка была нарисована:
96,875d = 1100000.111b
Как циферки после запятой переводятся.......
И еще чему равно
1 / 1010b = ?b
Зарание благодарен. zOmegA



Вопрос отправлен: 03.07.2003, 06:01
Отправитель: zOmegA (zOmegA@inbox.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Dark_Lord

Приветствую Вас, zOmegA!
В двоичной системе вычисления используются степени двойки, причём как позитивные, так и негативные, например 0,5=1/2 = (2)^-1, 0,25=1/4=(2)^-2, поэтому 0,875=0,5+0,25+0,125=1/2+1/4+1/8=(2)^-1 + (2)^-2 + (2)^-3

Ответ отправлен: 03.07.2003, 21:33
Отправитель: Dark_Lord


Отвечает Евгений Иванов

Вообще то нет дробных чисел.
Есть только целые.
А запятая придумана для удобства.
Например число 96,875 = это целое 96875, умноженное на 0.001, т.е. 10 в минус
3.
Или разделённое на 1000.
Т.е. например надо сложить на Ассемблере 2 числа:
3.23 + 45.123
Для этого умножаем на 1000 оба числа:
3230 + 45123 = 48353
И затем делим на 1000 полученное число:
48.353 - получил нужное!!
Всё просто и без всяких запятых!
Таким же образом можно делить числа "дробные" :)
45.123 / 3.23 = ?
45123 / 3230= 13.969969
Тут уже умножать не надо, потому что делим, и эта тысяча ушла...
Теперь умножь на миллион и работай!
Я хочу сказать, что запятая лишь помогает в понятии числа.


Ответ отправлен: 04.07.2003, 13:58
Отправитель: Евгений Иванов


Отвечает Zedr0n

Добрый день, zOmegA!
Тут все достаточно просто. Это число с фиксированной запятой в формате 12:4, насколько я понимаю. Смотри,
1100000b = 96d
1110b(4 цифры, потому что формат :4) - 14d.
14/16 = 0,875 - что и было надо.
Подробнее о действиях над числами фиксированной запятой можно почитать у Зубкова, или посмотри в каком-то из выпусков Hugi было хорошее объяснение...

Ответ отправлен: 06.07.2003, 19:17
Отправитель: Zedr0n


Отвечает Tigran K. Kalaidjian

Приветствую Вас, zOmegA!
Также, как и целочисленные, т.е. с помощью степеней двойки, только разряды "вправо" от запятой будут соответствовать 1/2, 1/4, 1/8, 1/16 и т.д., т.е. отрицательным степеням двойки.
0.111b=(1/2+1/4+1/8)d=0.875d
Теперь вторая часть вопроса (отступы могут потеряться, так что используйте шрифт Courier)
(1/1010)b=0.1d
Попробуем применить деление "в столбик"
10000 |1010
- 1010 +----
------ |0.0001100(1100)...
01100
- 1010
-----
10000 (приходим к изначальному=>есть период)
Попробуем представить частное в виде суммы ряда степеней двойки, которым соответствует "единица" в частном в двоичном представлении:
1/16+1/32+1/256+1/512...
И действительно:
+БЕСК.
-------|
\ 3
0.1 = \ ----------
/ (2k+1)
/ 8*2
-------|
k=0
Здесь k пробегает все значения от еуля до бесконечности.
Это и есть ответ на Ваш вопрос.
Проверял в программе "Mathematica" =)
Если будут вопросы - пишите на kalaidjian@pochtamt.ru

Ответ отправлен: 03.07.2003, 10:36
Отправитель: Tigran K. Kalaidjian


Отвечает Ayl

Добрый день, zOmegA!
> Как циферки после запятой переводятся.......
Также и переводятся. Рациональное число в некоторой позиционной с.с. (основание N) выглядит так:
ApA(p-1)...A(1)A(0).A(-1)A(-2)...A(-k)
где 0<=A(i)В 10-ю с.с. это число переводится по формуле:
D = SUMM (A(i) * N ^ i)
Т.е. 0.111b = 1*2^(-1) + 1*2^(-2) + 1*2^(-3) = 0.5 + 0.25 + 0.125 = 0.875
Из 10-й с.с. дробная часть переводится либо подбором (сначала смотрим, сколько раз в нем содержится число N^(-1), затем - N^(-2) и т.д.), либо по следующему алгоритму:
1. Ставим точку - разделитель между целой и дробной частью
2. Умножаем дробную часть на число N
3. Записываем в текущую позицию ЦЕЛУЮ часть результата
4. Оставляем ДРОБНУЮ часть результата в качестве нового числа для работы
5. Если число = 0 - все ОК, перевели. Результат - конечная дробь
6. Иначе повторяем действия с п.2, пока не надоест.
В приложении - пример перевода
> И еще чему равно 1 / 1010b = ?b
Ну возьми и подели (в столбик!):
1 0000 | 1010
1010 ------
------ |0.0001100...
1100
1010
------
10000 - повторился остаток
....
Итак, 1/1010b = 0.0(0011) - периодическая двоичная дробь.


Приложение:

Ответ отправлен: 03.07.2003, 10:42
Отправитель: Ayl


Отвечает Bob Johnson

Приветствую Вас, zOmegA!
Такой вопрос уже давно был тут как-то и я помню, что на него отвечал :) Но это было уже слишком давно...
В общем, берешь число, целую часть переводишь обычным способом, а дробную - вот так:
1. Умножаешь ее на 2.
2. Если результат больше 1, то пишешь 1 и вычитаешь 1 из результата (т.е. еще раз берешь дробную часть), иначе - пишешь 0.
3. Если исходная дробная часть после шага 2 не равна 0, то идешь на шаг 1.
4. Конец (алгоритма, в смысле).
Таким образом:
0,875 * 2 = 1,75
пишем 1, остается 0,75
0,75 * 2 = 1,5
пишем 1, остается 0,5
0,5 * 2 = 1
пишем 1, остается 0
все. число получилось 111.

* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---


Ответ отправлен: 04.07.2003, 00:30
Отправитель: Bob Johnson



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (23)
Perl (4)
Builder / Delphi (17)
Pascal (23)
Basic / VBA (7)
Java / JavaScript (11)
PHP (4)
MySQL / MSSQL (5)
Криптография (2)
WinAPI (4)
Пользователю
Windows 95/98/Me (30)
Windows NT/2000/XP (24)
"Железо" (22)
Поиск информации (16)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (5)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (5)
КоАП (4)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное