Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320

не получаеться преобразовать 8 ьит в 1 байт (биты в десятичное число)

15.04.2012, 19:57. Показов 1670. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот код надо написать на с++ но решил на дельфи но он не работает что то как будто проскакивает последний разряд

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const
  _SIZE = 8;
var
 m: array [0.. _SIZE - 1] of byte; 
 
procedure TForm1.Button2Click(Sender: TObject);
var
  i, r2, r3, f, n, bit: Integer;
  Result: Extended;
begin
 f:=0;
  for i:=0 to 7 do
  begin
   bit:=m[i];
   Result:=Power(bit*2, i); //bitx2^i (1*2^i)
   n:=round(Result);
   f:= f + n;
  end;
  Form1.Edit3.Text:=FloatToStr(f);
end;
некоторое описание: значит в массиве где число ячек всего 8 (начиная с 0 - 7) мы должны записать биты т.е. например
(0011 0000 = 48дес) но этот гребаный код чета не работает хотя все правильно. помогите че за лажа 3 дня мучиюсь. Проблемма вот в чем, он преобразовывает правильно числа :

00110001 -> 49
00110101 -> 53 и т.д

а числа ниже уже не праильно:

00110000 -> (должно быть: 48) выдает: 49
00101110 -> (Должно быть: 46) выдает: 47
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2012, 19:57
Ответы с готовыми решениями:

Преобразовать массив байт в десятичное число
Здравствуйте, товарищи! Есть массив байт byte bytes = { 48, 51, 48, 48 }; где элементы массива представляют собой символы Unicode,...

Как произвольный байт на входе преобразовать в биты
Собственно, вопрос в заголовке )) Подскажите, пожалуйста! ))

Преобразовать строку содержащую шестнадцатеричное число в десятичное число типа INT
TCHAR string = "A7D"; ... INT value = 2685; Как преобразовать?

3
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
15.04.2012, 20:09
Очевидно, потому что ноль в нулевой степени равен единице.
Именно из-за таких неочевидностей не советую писать
C++
1
 Power(bit*2, i);
при решении этой задачи. Наверное, автор хотел написать "красиво", а вышла лажа. Лучше действовать проверенным методом и вручную вычислять степень двойки. Или, по крайней мере, вынести bit за скобки.
1
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
15.04.2012, 20:12
C++
1
2
3
4
5
6
7
unsigned char FormByte(unsigned char m[])
{
     unsigned char byte=0;
     for(int i=0;i<8;i++)
          byte|=m[i]<<i;
     return byte;
}
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
15.04.2012, 22:06  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Очевидно, потому что ноль в нулевой степени равен единице.
Именно из-за таких неочевидностей не советую писать
C++
1
 Power(bit*2, i);
при решении этой задачи. Наверное, автор хотел написать "красиво", а вышла лажа. Лучше действовать проверенным методом и вручную вычислять степень двойки. Или, по крайней мере, вынести bit за скобки.
ОК ПОНЯЛ СПАСИБО ВОТ ИСПРАВИЛ ВСЕ РАБОТАЕТ!

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  i, r2, r3, f, n, bit: Integer;
  Result: Extended;
begin
 f:=0;
  for i:=0 to 7 do
  begin
   bit:=m[i];
   if bit <> 0 then
   begin
 
    Result:=Power(bit*2, i); //bitx2^i (1*2^i)
   end
   else
    Result :=0;
 
   n:=round(Result);
   f:= f + n;
  end;
  Form1.Edit3.Text:=FloatToStr(f);
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2012, 22:06
Помогаю со студенческими работами здесь

Преобразовать введенное пользователем десятичное число в число в указанной системе счисления
Написать программу на языке си, которая преобразует введенное пользователем десятичное число в число в указанной системе счисления (от 2...

Преобразовать двоичное число в виде строки в десятичное число
Преобразовать двоичное число в виде строки в десятичное число

Преобразовать десятичное число в число с заданным основанием
С++ решить задачу //преобразовать десятичное число в число с заданным основанием

Циклы - преобразовать число в десятичное
Доброго времени суток, помогите пожалуйста с задачей: Написать программу на языке программирования, которая преобразует введённое...

Преобразовать десятичное число в двоичное
Vообщем немного не стандартная задача. Мне нужно преобразовать десятичное число в двоичное. И представить это двоичное число в 16-битной...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru