0 / 0 / 0
Регистрация: 12.04.2014
Сообщений: 33
1

Перевести byte в integer Delphi

06.10.2015, 23:26. Показов 4349. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Считали данные с аппаратуры генератора и занесли их в регистры, 3 восьмибитных регистра. в паскале это тип byte, его нужно перевести в integer
я нашла в интернете, что можно перевести через присваивание переменных, но нам сказали использовать системы счисления. причем какая-то 255-ичная
я ничего не поняла, натолкните хотя бы на мысль пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2015, 23:26
Ответы с готовыми решениями:

Нельзя преобразовать тип function(a: byte;b: byte): byte к integer (Списки)
Создать список из целых чисел.Поменять в списке местами максимальный и минимальный элементы...

Перевести строку, содержащую данные массива байт (byte[]) в byte[]
Приветствую. Есть такая строка - "" Как её перевести в массив байт? 1. Допустим, что...

Как перевести byte[] или переменную типа IntPtr к типу byte[] (ассемблерные инструкции)?
Наткнулась на проблему, нужно перевести тип IntPtr в массив ассемблерной инструкции. Вот пример...

Укажите верно написанный оператор цикла, где: var n,i:integer; x:real; a: array[1.30] of byte;
Укажите верно написанный оператор цикла, где: var n,i:integer; х:геа1;a: array of byte; a) for...

8
Заблокирован
07.10.2015, 00:07 2
Цитата Сообщение от AnnGush Посмотреть сообщение
но нам сказали использовать системы счисления. причем какая-то 255-ичная
кто сказал-то? Как звучит оригинал задания?
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,248
07.10.2015, 00:28 3
Цитата Сообщение от AnnGush Посмотреть сообщение
я ничего не поняла
Я тоже. Узнайте у товарищей по несчастью точное задание и сообщите его.
P.S.

Не по теме:

Цитата Сообщение от AnnGush Посмотреть сообщение
3 восьмибитных регистра. в паскале это тип byte
3 восьмибитных регистра в паскале это незабвенный тип real.

0
Заблокирован
07.10.2015, 00:47 4
Цитата Сообщение от northener Посмотреть сообщение
3 восьмибитных регистра в паскале это незабвенный тип real.

Не по теме:

имхо, real 6 байт, не?

Миниатюры
Перевести byte в integer Delphi  
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
07.10.2015, 00:54 5
Байт это 8 нулей/единиц. В двоичной системе так храниться число от 0 до 255.
Integer в паскале это целое знаковое из двух байт (16 нулей/единиц).
Integer в Делфи это целое знаковое из четырёх байт (32 нулей/единиц).
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
07.10.2015, 01:23 6
а я так понимаю, что там имеется 3 восьмибитных регистра, именно три штуки по 1 байту по отдельности, а нужно трактовать их как 1 единицу информации, вот видать и вопрос в том, как объединить те 3 регистра однобайтных в Integer

если это тот случай, тогда вот так вот можно собрать 3 байта в одно 4х байтное

Delphi
1
2
3
4
5
6
7
8
9
10
11
var a, b, c: Byte;
    R: Integer;
begin
  a := 2;
  b := 3;
  c := 5;
 
  R := 0;
  R := R or (a shl 0);    // в R записываем 2
  R := R or (b shl 8);    // сдвигаемся на 8 позиций, или на 1  байт влево, записываем туда 3
  R := R or (c shl 16);   // аналогично сдвигаемся на 16 бит и записывает 5
Код
00000000 00000101 00000011 00000010
или в двоичном представлении вот так вот справа налево 2 3 5 в блоках
0
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,248
07.10.2015, 01:33 7
Цитата Сообщение от Verevkin Посмотреть сообщение
имхо, real 6 байт, не?
В паскале три.
В I8086/I8088 регистры A, B , C и D были 8-ми битными. А сопроцессора не было.
Регистр B был занят сохранением адреса возврата из процедуры. Так что ...
0
Заблокирован
07.10.2015, 08:25 8
Цитата Сообщение от northener Посмотреть сообщение
Так что ...
Ну, если речь про 16-битный паскакаль, то да.
0
438 / 367 / 132
Регистрация: 09.09.2011
Сообщений: 1,334
07.10.2015, 14:55 9
Что-то вы понаписали всего...
10-разрадная система счисления - это когда в каждом разряде (позиции числа) цифры кодируются от 0 до 9 (всего 10 разных цифр), в двуичной - 2 цифры в каждом разряде (0 и 1) в 16-ричной соответственно 16 (от 0 до F).

Как я понял по заданию в 3 регистрах хранятся 3 разряда 1-го числа в 255-ричной системы счисления - задание перевести в 10-чную и сохранить в значение в Integer. Но скорее всего имеется в виду 256-ричная система счисления, т.к. 0..255 - 256 возможных значений...

Так как любая(?) система счисления является позиционной - нужно знать какой регистр старший (старший разряд - самый левый) и т.д.

допустим у нас три регистра со значениями
Delphi
1
2
3
4
var 
  r1: byte = 254; //старший разряд
  r2: byte = 253;
  r3: byte = 252;
тогда в 10-ую систему это число (254)(253)(252) переводится так 254*255^2+253*255^1+252*255^0 = 16516350 + 64515 + 252 = 16581117
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{...}
  const
     _R1 = 65025; //255^2
     _R2 = 255; // 255^1
     _R3 = 1; // 255^0
  {...}
  var 
    value: longint;
    {...}
  begin
     {...} // читаем значения регистров в r1, r2, r3
     value:= r1*_R1 + r2 * _R2 + r3*_R3;
     writeln(value); // выводим значение на экран
  end;
0
07.10.2015, 14:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2015, 14:55
Помогаю со студенческими работами здесь

Как String перевести в Byte?
type digest = array of byte; procedure md5digest(var message; len: word; var d: digest); ...

Перевести Byte() в десятичное число
Помогите пожалуйста. Считываю метаданные фотографии. В частности положение (GPS) К примеру широта...

Как в С# string перевести в byte?
Есть переменная string str = '3d' или '0x3d'; Нужно получить значение типа byte bt = 0x3d;...

Почему при переменной "а" типа Integer или Byte программа отказывает
uses Crt; Var a: Real; begin C;rScr; a:= 200; While a >= 0 do begin WriteLn(' Число = '...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru