Лесни и бързи операции емулация с битови линии

Bit линия може да се опрости прилагането на определени алгоритми на езика на платформа "1С: Предприятие 8" на. Но докато в платформата с битови линии на операции там. В същото време тя е направила опити да симулират тези трансформации операция за броя на битовете, основани на отделни цикъла на обработка, което се отразява зле на тяхната скорост. Предложен нов просто решение на базата на представяне на низове битови струни герои "0" и "1". Той дава примери за изпълнение на код основни логически операции AND, OR, XOR, NO без цикли.
Както беше обсъдено аплет получаване последователните стойности на Грей код, който може да се използва, за да се ускори търсенето на варианти.

В статия, озаглавена "Изчисляване на хеш SHA-1 от 1С. Бит операции в 1C или бинарна математика урок "е набор от функции, които ви позволява да работите с числа като низ от байтове. В основата на всички функции, посочени там са битови цикъла на обработка.

Алтернативен начин за представяне струни битовите е, че те искали номера представляват символни низове. битови съхранение струни като символни низове от "0" и "1" и отнема най-малко 8 (16) пъти повече памет, но го прави възможно да се отърве от цикъла при извършване на логически операции на редовете.

1. "или"

Например, работата на логически «или» (или дизюнкции) на вход битови низове X и Y могат да се извършват, както следва:

където низ формат предполага предварително зададената битова, липсата на брой отделения в допълнение група нули и представяне на нула нули дължина на веригата, равен на бит на стринга от битове. Това е:

Така например, в съответствие с правилата за извършване на логическата "или" операция за оригиналните линии

резултат се получава:

С други думи, низа се превръща в десетични числа, а след това се добавя десетичен знак. В резултат на отделните разряди стават "0", "1" или "2". След това, номера на реда се формира отново, в който "2" стои на едно място на допълнение на двата блока се променя на "1" в съответствие с правилата за изпълнение на операцията по логика.

По същество този подход всеки бит обработват от отделен ехидна и обобщено в ограничен брой елиминира изхвърляния през суматора на трансфер с връзки.

Поради естеството на функцията "формат" битовата дължина на (символни низове), обработени по този начин ограничените 309 бита (символи).

2. функция "XOR"

Просто просто изглежда логично "изключителна или» (XOR, неравнопоставеност):

Например, вземете две 64-битов низ:

и да получите на следния правилния резултат:

3. "НЕ" функция

Даже по-лесно изглежда операция логическо отрицание "не» (не, отрицание):

4. "и"

Тя изглежда малко по-сложно логическа операция "и" (и, заедно):

5. Коментари и разяснения

Въпреки че основната употреба при операциите на битови низове предполага, че те са с еднаква дължина, съответстваща на предварително избрана фиксирана дължина на дума и функции работят с редове с различна дължина, ако тя е по-малко от предварително определена дълбочина малко. Когато тази линия е прав-изравнени. Разбира се, това може да се промени, ако е необходимо, леко усложняване на кода.

Голямото предимство на такова представителство на битови линии е способността да се съхранява информацията си в базата данни (за разлика от дългите числа). По този начин е необходимо да конвертирате множество редове и обратно, при които не се цикли не е достатъчно в повечето случаи не възникнат.

приемната скорост Проверка показва намалена печалба от около 15 пъти, в сравнение с функциите, предвидени в статията "се операция 1C урок или двоични математика".

По-скоро голям бонус е възможността да се преброят на такива (нули) в съответствие с вградена функция StrChisloVhozhdeny език (BitovayaStroka, "1"), което изисква оптимизация за цифрите дори на нивото на монтаж [Старателно за изчисляване на единични битове].

Сред функциите, лесно можете да проверите значението на отделните битове могат да бъдат полезни и на други функции низ.

Със силно желание по този начин е възможно да се приложи аритметични функции. Въпреки това, в този случай, по-ниски цифри на номера, който се намира в ляво.

Ето, например, тъй като работата на нарастване се извършва (най-маловажния бит в ляво):

6. Практическо приложение: код на Грей

Резултатът е следната функция:

Ако последователност от обаждания с начална стойност "0000" функция код произвежда следната последователност от стойности: