algorytm.org

Code 11 (USD-8)

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Code 11 (USD-8)
Ocena użytkowników:***** / 2
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 16 stycznia 2007 14:20

Code 11, zwany również USD-8 pozwala zakodować zestaw 11 znaków - stąd jego nazwa. Są to cyfry 0-9 oraz znak myślnika '-'. Code 11 jest kodem o dużej gęstości pozwalającym na zakodowanie dowolnej liczby znaków. Stosowany jest głównie do oznaczania urządzeń telekomunikacyjnych. Znaki kodowane są następująco:

ZnakWartośćKod
00101011
111101011
221001011
331100101
441011011
551101101
661001101
771010011
881101001
99110101
- (myślnik)10101101
Start/Stop-1011001


Pomiędzy kodowanymi znakami wprowadza się pojedyńczy odstęp o szerokości wąskiego paska/odstępu.

    Code 11 ma następującą strukturę:
  • Znak start/stop
  • Kodowany ciąg
  • Znak kontrolny 'C'
  • Znak kontrolny 'K', jeżeli długość kodowanego ciągu jest większa od 9
  • Znak start/stop

Obliczanie sumy kontrolnej 'C':
Należy obliczyć sumę ważoną wartości wszystkich kodowanych znaków przy czym znak najbardziej na prawo ma wagę 1, drugi od prawej 2, trzeci 3, itd aż do 10, znak 11 ma znów wagę 1. Wagi zatem zmieniają się od 1 do 10. Sumę ważoną dzielimy modulo 11 znak o wartości tego wyniku dodajemy na końcu kodowanego ciągu.

Obliczanie sumy kontrolnej 'K':
Należy obliczyć sumę ważoną wszystkich kodowanych znaków (łącznie z sumą kontrolną 'C') przy czym znak najbardziej na prawo ma wagę 1, drugi od prawej 2, trzeci 3, itd aż do 9, znak 10 ma znów wagę 9. Wagi zmieniają się zatem od 1 do 9. Sumę ważoną dzielimy modulo 11 znak o wartości tego wyniku dodajemy na końcu kodowanego ciągu.

Przykład:

Zakodujmy ciąg 12345-6789
Najpierw znak start/stop: 1011001
Znak 1 kodujemy: 1101011
Znak 2 kodujemy: 1001011
Znak 3 kodujemy: 1100101
Znak 4 kodujemy: 1011011
Znak 5 kodujemy: 1101101
Znak - kodujemy: 101101
Znak 6 kodujemy: 1001101
Znak 7 kodujemy: 1010011
Znak 8 kodujemy: 1101001
Znak 9 kodujemy: 110101
Suma kontrolna 'C' = 10 * 1 + 9 * 2 + 8 * 3 + 7 * 4 + 6 * 5 + 5 * 10 + 4 * 6 + 3 * 7 + 2 * 8 + 1 * 9 = 10 + 18 + 24 + 28 + 30 + 50 + 24 + 21 + 16 + 9 = 230 mod 11 = 10, czyli użyjemy znaku '-' kodowanego jako: 101101
Kodowany ciąg jest dłuższy niż 9 znaków dlatego obliczymy jeszcze sumę kontrolną 'K' = 2 * 1 + 1 * 2 + 9 * 3 + 8 * 4 + 7 * 5 + 6 * 10 + 5 * 6 + 4 * 7 + 3 * 8 + 2 * 9 + 1 * 10 = 2 + 2 + 27 + 32 + 35 + 60 + 30 + 28 + 24 + 18 + 10 = 268 mod 11 = 4, czyli użyjemy znaku '4' kodowanego jako: 1011011
I na końcu znak start/stop: 1011001
Wszystko to:
1011001 1101011 1001011 1100101 1011011 1101101 101101 1001101 1010011 1101001 110101 101101 1011011
zapisane w wersji graficznej wygląda następująco:
Code 11 (USD-8)

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 1
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 2
Tomasz LubińskiJava
.java
.java
***** / 2
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 29 sierpnia 2012 18:27
Komentarze
photo
-1 # darek 2009-12-07 23:32
Przydało się .

---
alejka.pl
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz