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

Побитовые операции

15.04.2012, 12:14. Показов 1261. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача должна быть реализована в с++ но пришлось временно писать в дельфи. суть такая: входящие число в диапазоне 0-n (8 байт) выходящие группа чисел в виде нескольких байт с помощью которых можно представить число.

Пример: входящие 65535 выходящие два числа 255 и 127.

Проблемма заключаеться в том что я не уверен правильно ли выходят числа а именно в каком порядке их надо вставить. Ну допистим я ввел число 65535 откомпелировал программу и как компелятор запишет это число в файле *.exe* или *.dll* без разници? 255 и потом 127 или 127 а 255 ? Еще не очень понятно как в с++ работать с битми (само собой по маске) но а допустим я щас реализовал все в массиве типа byte в с++ буду использовать U.. Char

ПРЕОБРАЗОВАТЬ ДЕСЯТИЧНОЕ В БАЙТЫ.rar

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses Math;
 
{$R *.dfm}
const
  _SIZE = 8*2*2;
var
 m: array [0.. _SIZE - 1] of byte;
 i: Integer = 0;
 
//разложить по бйтам 
 
procedure return;
 var
  t, c: Integer;
begin
 c:=8;
  Form1.Edit2.Clear;
  for t:=0 to _SIZE - 1 do
  begin
 
    if  t = c then
    begin
     Form1.Edit2.Text:=Form1.Edit2.Text + ' ';
      c:= c+8;
    end;
    Form1.Edit2.Text:=Form1.Edit2.Text + IntToStr(m[t]);
  end;
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 label step;
  var
   x, y, z: Real48;
begin
  i:=0;
  x:=StrToInt(Edit1.Text); //ввод числа 2147483648
step:
  y:= x/2;
 
  z:= trunc(y);   // z:= x mod 2;
  z:= y - z;
 
  if z = 0 then
  begin
    m[i]:=0;
  end
  else
    m[i]:=1;
  x:=y;
  if y < 1 then
  begin
    Label1.Caption:='Бит: ' + IntToStr(i);
    return;
    Exit;
  end;
  if i > _SIZE then
    ShowMessage('Ошибка! Выход за пределы');
  inc(i);
  goto step;
end;
 
//преобразовать восемь разрядов в байт
procedure BitToByte();
 var
  i: Integer;
  bit: Byte;
  r2: Integer;
  Result: Extended;
  f,r3, n:  Integer ;
begin
 f:=0;
  for i:=0 to 7 do
  begin
   bit:=m[i];
   Result:=Power(bit*2, i); //bitx2^i (1*2^i)
   n:=TRUNC(Result);
   f:= f + n;
  end;
  Form1.Edit3.Text:=FloatToStr(f);
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1.Click;
  BitToByte();
end;
 
end.
C
1
  //лад потом вставлю
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2012, 12:14
Ответы с готовыми решениями:

Побитовые операции
Помогите решить несколько задач по битовым операциям,они все малы по реализации. И объяснить начиная с 3 задачи,что нужно сделать?А то не...

Побитовые операции
1-программа #include &lt;stdio.h&gt; #include &lt;windows.h&gt; int main(void) { char g; /* ??? ????????? */ char s; /* ??????? ?????? */ ...

Побитовые операции
У меня вопрос по правильности побитовых операций в моем коде: class Extracter :public AudioChecker { private: ...

5
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
15.04.2012, 12:35
На С++ эта задача легко реализуется через union
C++
1
2
3
4
5
6
7
8
9
10
11
union IntByte
{
long int a;
char b[4];
};
int main()
{
    IntByte x;
    x.a=65535;
    printf("%u %u %u %u",x.b[3],x.b[2],x.b[1],x.b[0]);
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.04.2012, 13:40
Цитата Сообщение от n971030 Посмотреть сообщение
Пример: входящие 65535 выходящие два числа 255 и 127.
65535 = 1111111111111111 (16-ть единиц 2 байта)
255 = 11111111 (8-мь единиц 1 байт)
127 = 1111111 (7-мь единиц 1 байт)

Где логика 16-ть единиц = 8 + 7??? Куда ещё 1 бит пропадает???
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 13:53
использовать goto - это не очень хорошо
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
15.04.2012, 19:07  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
65535 = 1111111111111111 (16-ть единиц 2 байта)
255 = 11111111 (8-мь единиц 1 байт)
127 = 1111111 (7-мь единиц 1 байт)

Где логика 16-ть единиц = 8 + 7??? Куда ещё 1 бит пропадает???
да дело в том что проект пока на стадии разработки. но мы исправимся

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
На С++ эта задача легко реализуется через union
C++
1
2
3
4
5
6
7
8
9
10
11
union IntByte
{
long int a;
char b[4];
};
int main()
{
    IntByte x;
    x.a=65535;
    printf("%u %u %u %u",x.b[3],x.b[2],x.b[1],x.b[0]);
}
и он мне выведит? отдельно байты?
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
15.04.2012, 20:45
Цитата Сообщение от n971030 Посмотреть сообщение
и он мне выведит? отдельно байты?
А куда же он денется.
union - это объединение, т.е. переменные накладываются друг на друга.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2012, 20:45
Помогаю со студенческими работами здесь

Побитовые операции в С++
Здраствуйте. Нужно написать программу которая будед считывать количество единичек (1) в побитовом представлении числа. Пример input: 15 ...

Побитовые операции
Задача: Ввести последовательность из 8 символов. Если символ – восьмеричная цифра, то заменить в нем бит, номер которого совпадает с этой...

Побитовые операции
Пожалуйста, объясните как работают побитовые операторы &amp; и |. Например идет: i=03; j=01; k=i &amp; j; // k=1 k=i | j; // k=3 А...

Побитовые операции
Выбрать алгоритм, составить его блок-схему и программу для решения выбранного варианта задания. Во всех вариантах предполагается, что...

Побитовые операции
С помощью побитовых операций преобразовать число -78 в 15 Вот что пыталась делать, кто знает как сделать? int v =-78; int i = 1; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru