Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2013, 16:21   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
var b:array[1..8] of integer; { можно  и array[1..8] of byte; }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2013, 16:21   #12
grib_aga
Пользователь
 
Регистрация: 09.01.2013
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

Код:
function IntToBin(Value: Longint; Digits, Spaces: Integer): string;
Спасибо, работает, но способ со смещением удобней, ибо на вход подается байт.

Последний раз редактировалось grib_aga; 18.03.2013 в 16:28.
grib_aga вне форума Ответить с цитированием
Старый 18.03.2013, 16:26   #13
grib_aga
Пользователь
 
Регистрация: 09.01.2013
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
var b:array[1..8] of integer; { можно  и array[1..8] of byte; }
Спасибо! Работает как часы.
P.S. Прошу тему пока не закрывать, т.к. скорее всего возникнут еще вопросы.

Последний раз редактировалось grib_aga; 18.03.2013 в 16:30.
grib_aga вне форума Ответить с цитированием
Старый 18.03.2013, 18:42   #14
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
function IntToBin(Value: Longint; Digits, Spaces: Integer): string;
на входе десятичное число
Так вот откуда ноги растут!

Сначала корифеи называют внутреннее двоичное представление числа десятичным, а потом я на 5 страницах бодаюсь с новичками, пытаясь объяснить, что оно совсем не десятичное.
s-andriano вне форума Ответить с цитированием
Старый 18.03.2013, 22:55   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

за "корифея" - спасибо!

Насчёт машинного/десятичного представления спорить не буду,
1-х, меня явно не хватит на пять страниц,
2-х, спор ни о чём (я же помню, как Вы с Рома][а об одном и том же говорили, причём не понимая друг друга),
в третьих:
Код:
var x : integer;
begin
    x := 25;
    WriteLn(x);
end.
Вы же не будете спорить, что и константа у нас задана в коде в ДЕСЯТИЧНОМ виде и в результате выполнения WriteLn будет напечатано ДЕСЯТИЧНОЕ число ?

По сути замечания.
Согласен. Разумеется, если у нас параметер переменная типа LongInt, то ни о каком десятичном (да и двоичном) представлении говорить некорректно!
Цитата:
Код:
function IntToBin(Value: Longint; Digits, Spaces: Integer): string;
на входе десятичное число
Поэтому я с Вашим замечанием согласен. на входе ИСХОДНОЕ целое число для преобразования в двоичную строку.

на английском это звучит так:
Цитата:
Converts an integer into a binary string representation
или так:
Цитата:
The value to convert to a binary string representation.
Приношу свои извинения, если невольно ввёл кого-то в заблуждение...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2013, 08:19   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
var x : integer;
begin
    x := 25;
    WriteLn(x);
end.
Вы же не будете спорить, что и константа у нас задана в коде в ДЕСЯТИЧНОМ виде и в результате выполнения WriteLn будет напечатано ДЕСЯТИЧНОЕ число ?
Я надеюсь, и Вы не будете спорить, что integer хранится в компьютере именно в двоичной СС.
Кстати:
Вопрос: как перевести число из 2-чной СС в 10-чную?
Ответ: WriteLn(x);
Причем ответ - верный (хотя и с некоторыми оговорками).
Цитата:
Разумеется, если у нас параметер переменная типа LongInt, то ни о каком десятичном (да и двоичном) представлении говорить некорректно!
Если под словом "представление" подразумевать исключительно текстовую запись, то - безусловно.
Но исключительно потому, что числа хранятся в компьютере НЕ в виде текста. (т.е. отвергаем по критерию текст/не текст)
Если же нас интересует система счисления, а представление мы готовы трактовать довольно широко, то переменная хранится именно в двоичном представлении и ни в каком другом.
Цитата:
Поэтому я с Вашим замечанием согласен. на входе ИСХОДНОЕ целое число для преобразования в двоичную строку.
Ну да.
Я обычно пользуюсь термином во внутреннем представлении.
("исходное" - не совсем верно, в Вашем первом примере "исходное" - это запись десятичной константы в программе "x := 25;", компилятор преобразует его во внутреннее двоичное, а финальное - тоже десятичное, но уже на экране - результат обратного преобразования во время исполнения программы.)
В данном случае важно, что существует число, и существует его запись в виде текста, и это далеко не одно и то же.
s-andriano вне форума Ответить с цитированием
Старый 19.03.2013, 09:28   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В данном случае важно, что существует число, и существует его запись в виде текста, и это далеко не одно и то же.
согласен.

Ну вот, вроде бы, разобрались с проблемой..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.04.2013, 12:21   #18
grib_aga
Пользователь
 
Регистрация: 09.01.2013
Сообщений: 20
По умолчанию

Как создать из массива чисел байт и записать его?
Делаю так:

Код:
   var a: array[1..8] of integer;
         i: integer;
         b: byte;
         FileTo: TFileStream;
begin
   FileTo := TFileStream.Create('test', fmCreate); 
   for i := 1 to 8 do
     a[i] := random(1);   
    

    b :=   ? Как преобразовать в байт?
      StreamTo.WriteBuffer(b, 1);

Последний раз редактировалось grib_aga; 08.04.2013 в 12:24.
grib_aga вне форума Ответить с цитированием
Старый 08.04.2013, 14:50   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
b := ? Как преобразовать в байт?
если Вам нужен байт, то, вообще-то, зачем Вам массив A?

впрочем, хозяин - барин:
Код:
b:=0;
for i:=1 to 8 do
  b := (b shl 1) or A[i];
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.04.2013, 12:18   #20
grib_aga
Пользователь
 
Регистрация: 09.01.2013
Сообщений: 20
По умолчанию

Serge_Bliznykov, спасибо.
grib_aga вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народ не получается с задачей в c++! Ни как не получается даже начать! дайте решение,хотя бы набросайте чего нибудь! sonat Помощь студентам 2 30.05.2012 08:27
байт диагностики Dimasik73 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 02.03.2012 23:41
Не получается принять TCP/IP пакет более 2048 байт. Visual C++ Gvaler C/C++ Сетевое программирование 3 28.09.2011 23:00
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Поиск байт Gerzs Общие вопросы Delphi 9 06.11.2009 17:28