Библиотека String  1.0
Own String library. Лабораторная работа ФБИТ ИТМО
Функции
Файл binstr.cpp

Реализация методов класса "Битовая строка". Подробнее...

#include <iostream>
#include <cstring>
#include "own/string.h"
#include "own/binstr.h"

См. исходные тексты.

Функции

BinStr own::operator^ (const BinStr &pobj1, const BinStr &pobj2)
 
BinStr own::operator^ (int pobj1, const BinStr &pobj2)
 
BinStr own::operator^ (const BinStr &pobj1, int pobj2)
 
int own::operator== (const BinStr &pobj1, const BinStr &pobj2)
 
int own::operator== (const BinStr &pobj1, int pobj2)
 
int own::operator== (int pobj1, const BinStr &pobj2)
 

Подробное описание

Реализация методов класса "Битовая строка".

Данный файл содержит в себе реализации методов производного от "Строка" класса "Битовая строка"

См. определение в файле binstr.cpp

Функции

◆ operator==() [1/3]

int own::operator== ( const BinStr pobj1,
const BinStr pobj2 
)

Проверка равенства строк как бинарных чисел

См. определение в файле binstr.cpp строка 177

177  {
178  return pobj1.getNum() == pobj2.getNum();
179 }

◆ operator==() [2/3]

int own::operator== ( const BinStr pobj1,
int  pobj2 
)

Проверка равенства бинарной строки и числа

См. определение в файле binstr.cpp строка 181

181  {
182  return pobj1.getNum() == pobj2;
183 }

◆ operator==() [3/3]

int own::operator== ( int  pobj1,
const BinStr pobj2 
)

Проверка равенства бинарной строки и числа

См. определение в файле binstr.cpp строка 185

185  {
186  return pobj1 == pobj2.getNum();
187 }

◆ operator^() [1/3]

BinStr own::operator^ ( const BinStr pobj1,
const BinStr pobj2 
)

Операция "исключающее или"

Возвращает
Сумма по модулю 2

См. определение в файле binstr.cpp строка 114

114  {
115  if (pobj1.len >= pobj2.len) {
116  BinStr tmp(pobj1.len);
117  int i = pobj1.len - 1;
118  int j = pobj2.len - 1;
119  for (; j>=0; i--, j--) {
120  tmp.pCh[i] = (pobj1.pCh[i] == pobj2.pCh[j]) ? '0' : '1';
121  }
122  for (; i>=0; i--) {
123  tmp.pCh[i] = pobj1.pCh[i];
124  }
125  return tmp;
126  } else {
127  BinStr tmp(pobj2.len);
128  int i = pobj2.len - 1;
129  int j = pobj1.len - 1;
130  for (; j>=0; i--, j--) {
131  tmp.pCh[i] = (pobj2.pCh[i] == pobj1.pCh[j]) ? '0' : '1';
132  }
133  for (; i>=0; i--) {
134  tmp.pCh[i] = pobj2.pCh[i];
135  }
136  return tmp;
137  }
138 }

◆ operator^() [2/3]

BinStr own::operator^ ( const BinStr pobj1,
int  pobj2 
)

Операция "исключающее или"

Возвращает
Сумма по модулю 2

См. определение в файле binstr.cpp строка 173

173  {
174  return pobj2^pobj1;
175 }

◆ operator^() [3/3]

BinStr own::operator^ ( int  pobj1,
const BinStr pobj2 
)

Операция "исключающее или"

Возвращает
Сумма по модулю 2

См. определение в файле binstr.cpp строка 140

140  {
141  int pobj1len = 0;
142  int pobj1i = pobj1;
143  for (; pobj1i != 0; pobj1i >>= 1, pobj1len++);
144 
145  if (pobj1len >= pobj2.len) {
146  BinStr tmp(pobj1len);
147  int i = pobj1len - 1;
148  int j = pobj2.len - 1;
149  for (; j>=0; i--, j--) {
150  tmp.pCh[i] = ((pobj1 % 2) == (pobj2.pCh[j]-'0')) ? '0' : '1';
151  pobj1 >> 1;
152  }
153  for (; i>=0; i--) {
154  tmp.pCh[i] = (pobj1 % 2 == 0) ? '0' : '1';
155  pobj1 >> 1;
156  }
157  return tmp;
158  } else {
159  BinStr tmp(pobj2.len);
160  int i = pobj2.len - 1;
161  int j = pobj1len - 1;
162  for (; j>=0; i--, j--) {
163  tmp.pCh[i] = ((pobj2.pCh[i]-'0') == (pobj1 % 2)) ? '0' : '1';
164  pobj1 >> 1;
165  }
166  for (; i>=0; i--) {
167  tmp.pCh[i] = pobj2.pCh[i];
168  }
169  return tmp;
170  }
171 }