Wpisany przez Tomasz Lubiński,
28 lutego 2006 22:08
System ISBN-10, zwany początkowowo poprostu ISBN, powstał w Wielkiej Brytanii w 1966. W Polsce został przyjęty w 1974 roku. Był on używany do 31 grudnia 2006 roku. Od 1 stycznia 2007 roku książki oznaczane są wyłącznie numerem ISBN-13.
Numer ISBN-10 (ang. International Standard Book Number) służy do oznaczania książek. Ma on następującą strukturę:
Należy zwrócić uwagę iż odseparowywanie kolejnych części numeru ISBN-10 pozwala łatwo zorientować się, gdzie zaczynają się kolejne pola, ale nawet bez separatorów '-' możliwe byłoby wyznaczenie kodów kraju/wydawcy/książki. Dzieje się tak, gdyż raz wykorzystanego kodu nie wykorzystuje się jako prefiksu innego. I tak np numer 2 oznacza obszar francuskojęzyczny i żaden inny kod kraju nie zaczyna się na 2. Podobnie 83 oznacza Polskę, ale nie ma innych kodów kraju zaczynających się od 83.
Dodatkowe 5 cyfr w numerze ISBN-10 może oznaczać cenę zakodowaną w następujący sposób. Pierwsza cyfra oznacza walutę (patrz tabela poniżej), 4 kolejne cyfry oznaczają cenę pomnożoną razy 100. Wynika z tego że kod: 51234 oznaczać będzie cenę: 12.34$. Kod o końcówce 9999 oznacza cenę 99.99 lub większą.
Obliczanie cyfry kontrolnej dla identyfikatora ISBN-10 przebiega następująco. Kolejne 9 cyfr numeru mnożymy przez wagi: 10, 9, 8, 7, 6, 5, 4, 3, 2 i sumujemy ze sobą. Wynik dzielimy modulo 11, a następnie wynik ten odejmujemy od 11 i dzielimy znów modulo 11. Jeżeli wynik ma wartość 10 to znakiem kontrolnym jest 'X', w przeciwnym wypadku znakiem kontrolnym jest wyznaczona liczba.
Sprawdźmy czy numer (z opcjonalnymi pięcioma cyframi): 83-87347-42-6 50500 jest prawidłowy.
Kolejne cyfry numeru należy zatem przemnożyć przez odpowiednie wagi i dodać do siebie.
10*8 + 9*3 + 8*8 + 7*7 + 6*3 + 5*4 + 4*7 + 3*4 + 2*2 = 80 + 27 + 64 + 49 + 18 + 20 + 28 + 12 + 4 = 302.
Teraz dzielimy ten wynik modulo 11.
302 mod 11 = 5.
Następnie wynik ten odejmujemy od 11.
11 - 5 = 6.
I znów dzielimy modulo 11.
6 mod 11 = 6.
Cyfra kontrolna to 6 zatem numer jest prawidłowy.
Rozważmy jeszcze jeden numer (bez dodatkowych cyfr): 83-09-01550-X.
A więc najpierw suma ważona:
10*8 + 9*3 + 8*0 + 7*9 + 6*0 + 5*1 + 4*5 + 3*5 + 2*0 = 80 + 27 + 0 + 63 + 0 + 5 + 20 + 15 + 0 = 210.
Teraz dzielimy ten wynik modulo 11.
210 mod 11 = 1.
Następnie wynik ten odejmujemy od 11.
11 - 1 = 10.
I znów dzielimy modulo 11.
10 mod 11 = 10.
Suma kontrolna to 10 a więc znakiem kontrolnym powinien być 'X', i tak jest też w rzeczywistości zatem i ten numer jest prawidłowy.
Numer ISBN-10 (ang. International Standard Book Number) służy do oznaczania książek. Ma on następującą strukturę:
- identyfikator kraju/języka (1-5 znaków),
- separator '-',
- identyfikator wydawcy (przynajmniej 1 znak),
- separator '-',
- identyfikator tytułu (przynajmniej 1 znak),
- separator '-',
- suma kontrolna ISBN (jedna cyfra lub znak 'X'),
- dodatkowe informacje - opcjonalnie (5 cyfr).
Należy zwrócić uwagę iż odseparowywanie kolejnych części numeru ISBN-10 pozwala łatwo zorientować się, gdzie zaczynają się kolejne pola, ale nawet bez separatorów '-' możliwe byłoby wyznaczenie kodów kraju/wydawcy/książki. Dzieje się tak, gdyż raz wykorzystanego kodu nie wykorzystuje się jako prefiksu innego. I tak np numer 2 oznacza obszar francuskojęzyczny i żaden inny kod kraju nie zaczyna się na 2. Podobnie 83 oznacza Polskę, ale nie ma innych kodów kraju zaczynających się od 83.
Dodatkowe 5 cyfr w numerze ISBN-10 może oznaczać cenę zakodowaną w następujący sposób. Pierwsza cyfra oznacza walutę (patrz tabela poniżej), 4 kolejne cyfry oznaczają cenę pomnożoną razy 100. Wynika z tego że kod: 51234 oznaczać będzie cenę: 12.34$. Kod o końcówce 9999 oznacza cenę 99.99 lub większą.
pierwsza cyfra | waluta |
0 | GBP - funt brytyjski |
1 | GBP - funt brytyjski |
3 | $ - dolar australijski |
4 | $ - dolar nowozelandzki |
5 | $ - dolar amerykański |
6 | $ - dolar kanadyjski |
Obliczanie cyfry kontrolnej dla identyfikatora ISBN-10 przebiega następująco. Kolejne 9 cyfr numeru mnożymy przez wagi: 10, 9, 8, 7, 6, 5, 4, 3, 2 i sumujemy ze sobą. Wynik dzielimy modulo 11, a następnie wynik ten odejmujemy od 11 i dzielimy znów modulo 11. Jeżeli wynik ma wartość 10 to znakiem kontrolnym jest 'X', w przeciwnym wypadku znakiem kontrolnym jest wyznaczona liczba.
Przykład:
Sprawdźmy czy numer (z opcjonalnymi pięcioma cyframi): 83-87347-42-6 50500 jest prawidłowy.
Kolejne cyfry numeru należy zatem przemnożyć przez odpowiednie wagi i dodać do siebie.
10*8 + 9*3 + 8*8 + 7*7 + 6*3 + 5*4 + 4*7 + 3*4 + 2*2 = 80 + 27 + 64 + 49 + 18 + 20 + 28 + 12 + 4 = 302.
Teraz dzielimy ten wynik modulo 11.
302 mod 11 = 5.
Następnie wynik ten odejmujemy od 11.
11 - 5 = 6.
I znów dzielimy modulo 11.
6 mod 11 = 6.
Cyfra kontrolna to 6 zatem numer jest prawidłowy.
Rozważmy jeszcze jeden numer (bez dodatkowych cyfr): 83-09-01550-X.
A więc najpierw suma ważona:
10*8 + 9*3 + 8*0 + 7*9 + 6*0 + 5*1 + 4*5 + 3*5 + 2*0 = 80 + 27 + 0 + 63 + 0 + 5 + 20 + 15 + 0 = 210.
Teraz dzielimy ten wynik modulo 11.
210 mod 11 = 1.
Następnie wynik ten odejmujemy od 11.
11 - 1 = 10.
I znów dzielimy modulo 11.
10 mod 11 = 10.
Suma kontrolna to 10 a więc znakiem kontrolnym powinien być 'X', i tak jest też w rzeczywistości zatem i ten numer jest prawidłowy.
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C/C++ | .cpp | .cpp | ***** / 2 | |
Tomasz Lubiński | Delphi/Pascal | .pas | .pas | ***** / 1 | |
Tomasz Lubiński | Java | .java | .java | ***** / 1 |
Kody krajów dla ISBN
|
|
Poprawiony: 29 sierpnia 2012 20:16