Size: a a a

2020 December 09

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
ты записываеш свои циферки в Minor, Major, Build, Release а Vr получаешь соответствующее значение Minor+Major*2^16+ Build*2^32+ Release*2^48
Сейчас будут кидать помидоры и тп, но: а почему такое преобразование word->Int64?
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
да для компилятора одно 64разрядное число
Тогда это почти как это:
https://t.me/Delphi_Lazarus/146312
источник

z

zamtmn in Delphi & Lazarus
да, только правильно с точки зрения битов-байтов
источник

z

zamtmn in Delphi & Lazarus
и неправильно с точки зрения последовательности хранения байтов
источник

z

zamtmn in Delphi & Lazarus
делай как считаешь нужным короче))
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
делай как считаешь нужным короче))
А почему такое преобразование word->Int64?
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
делай как считаешь нужным короче))
Интересно же, как это работает!
источник

z

zamtmn in Delphi & Lazarus
что там про матчасть говорили?
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
что там про матчасть говорили?
Не знаю, мне никто ничего не говорил...
источник

RS

Renat Suleymanov in Delphi & Lazarus
Сергей Пятыгин
Интересно же, как это работает!
А что непонятного то? Вопрос конкретней задай.
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
что там про матчасть говорили?
Можно очень долго искать в "МатЧасте" почему магнитное поле считается от амплитудного значения тока, а активные потери от действующего. Но проще спросить, не правда ли?
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Renat Suleymanov
А что непонятного то? Вопрос конкретней задай.
Почему при преобразовании типа в памяти (record+case) word->Int64 происходит так: Minor+Major*2^16+ Build*2^32+ Release*2^48.
Из примера Алексея в частности:
https://pastebin.com/VPKgqmeh
источник

z

zamtmn in Delphi & Lazarus
например есть 2 бита b0 и b1. по отдельности просто биты. если их объеденить в 2х битное слово то это будет (2^0)*b0+(2^1)*b1 это понятно? в том коде подряд лежащие в памяти четыре 16 битных слова объединяются в одно 64 битное. так оно устроено
источник

RS

Renat Suleymanov in Delphi & Lazarus
Ну In64 64-битное целое. Word - 16-битное. Соответственно Int64 битное можно представить, к примеру, 8 байтами или 4 Word'ами или двумя LongInt
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Спасибо, это преобразование автоматически компилятор делает?
источник

RS

Renat Suleymanov in Delphi & Lazarus
16*4 бит = 64 бит
источник

z

zamtmn in Delphi & Lazarus
его никто не делает. оно само делается изза устройства хранения чисел в памяти
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Ок, спс!
источник

RS

Renat Suleymanov in Delphi & Lazarus
Сергей Пятыгин
Спасибо, это преобразование автоматически компилятор делает?
В памяти представлено. Просто к одному и тому же участку памяти можно обратится подразумевая разные типы данных. Хорошо, если у них одна размерность. Это бывает удобно, как в данном случае с record и case
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Renat Suleymanov
В памяти представлено. Просто к одному и тому же участку памяти можно обратится подразумевая разные типы данных. Хорошо, если у них одна размерность. Это бывает удобно, как в данном случае с record и case
Спасибо, в общем понятно. Не буду больше отвлекать, так как это уже точно-МатЧасть.
источник