Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Метод релаксации неправильно работает http://www.cyberforum.ru/cpp-beginners/thread548874.html
Мне необходимо решить уравнение Пуассона методом релаксации для области во вложении. (Она целиком лежит в квадрате 3х3). Я написал код для метода релаксации, однако он даёт неправильный результат. Помогите найти ошибку. N - количество частей, Omega - параметр релаксации, eps - точность, phi - матрица начальных приближений, f - функция распределения, U - нужная матрица. void Relax(int N,...
C++ Не могу понять свою ошибку! Здравствуйте! Скажите, в чем моя ошибка... При вводе чисел 1 1 1 в исходный файл программа выдаёт "YES", но при вводе 2 2 4, программа выдает "NO"... #include <iostream> using namespace std; int main(){ freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); long a, b, c; cin >> a, b, c; http://www.cyberforum.ru/cpp-beginners/thread548873.html
Как нарисовать график? C++
У меня заданы функции: y1=a0+a1*x/exp(1/x) y2=a0+a1*log(sqrt(x)) и массив известных значений У a0,a1 известны, x- заданный массив как построить график, этих функций (y,y1,y2) в консоли?
C++ Деревья
Не можете ли подсказать как решить задачку: Проверить, является ли двоичное дерево AVL-деревом?
C++ Vectored handler http://www.cyberforum.ru/cpp-beginners/thread548816.html
объясните пожалста, почему по окончании обработки исключения, не восстанавливается флаг TF ??? AddVectoredExceptionHandler(1, VectoredHandler); .. взводим TF флаг .. любая команда (генерируется исключение) .. любая команда (здесь уже TF флаг сброшен)
C++ Пересекаются ли многоугольники? Дано 2 многоугольника Нужен алгоритм, который определяет, пересекаются они или нет подробнее

Показать сообщение отдельно
n971030
 Аватар для n971030
163 / 95 / 1
Регистрация: 23.01.2010
Сообщений: 1,169
15.04.2012, 12:14     Побитовые операции
Задача должна быть реализована в с++ но пришлось временно писать в дельфи. суть такая: входящие число в диапазоне 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
  //лад потом вставлю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru