7.2 -rasm: Tarmoqli paketli ma'lumotlarning bir nechta qatorlari oddiy matnli fayl sifatida. Chapdagi raqam - 1970 yil 1 yanvardan boshlab soniyalar soni va o'ngdagi raqam - paket hajmi (baytlarda).
|
2007 yil o'rtalariga kelib, o'lchovlar suzuvchi nuqta qiymatlari uchun aniqlik chegaralariga yaqinlashdi.
Ma'lumotlar har bir suzuvchi nuqta raqamiga 8 bayt (ya'ni, 64-bitli suzuvchi nuqta qiymatlari) ishlatilgan tizimda tahlil qilindi. IEEE standarti 64 bitli yoki "ikki aniqlikdagi" suzuvchi nuqta qiymatlari uchun mantissa uchun 52 bit ishlatiladi. Bu taxminan 7 ga ruxsat beradi . 6 2 52 turli xil haqiqiy qiymatlar. 0 dan 1 gacha bo'lgan diapazonda bu bir -biridan farq qiladigan qiymatlarni olish imkonini beradi , lekin raqamlar juda katta bo'lganida, masalan, 1.000.000.000 tartibida, faqat farqli qiymatlarni saqlash mumkin . Boshqacha qilib aytganda, ikki aniqlikdagi suzuvchi nuqta qiymatlari atigi 16 ta muhim raqam bilan saqlanishi mumkin.
Tarmoq paketlari uchun vaqt o'lchovlari 0,00001 sekundgacha farq qiladi. Boshqacha aytganda, o'lchovlar 15 ta muhim raqamga ega, ya'ni ularni 64-bitli suzuvchi nuqta qiymatlari sifatida to'liq aniqlikda saqlash mumkin, faqat.
Bundan tashqari, aniqlik chegaralariga yaqin bo'lgan qiymatlar bilan, bu qiymatlar bo'yicha bajarilgan arifmetika noto'g'ri bo'lishi mumkin. Bu hikoya 11.5.14 -bo'limda yana ko'rib chiqilgan .
7 . 4 . 5 Matn
Matn kompyuterda saqlanadi, avval har bir belgini butun songa aylantiradi va keyin butun sonni saqlaydi. Masalan, "A" harfini saqlash uchun biz aslida 65 raqamini saqlaymiz; "B" - 66, "C" - 67 va boshqalar.
Harf odatda bitta bayt (8 bit) yordamida saqlanadi. Har bir harfga butun son beriladi va bu raqam saqlanadi. Masalan, " A" harfi 65 raqami bo'lib, ikkilik formatda shunday ko'rinadi: 01000001 . Matn "Salom" (104, 101, 108, 108, 111), bu kabi qarash edi: 01101000 01100101 01101100 01101100 01101111
Harflarni raqamlarga aylantirish kodlash deb ataladi . Yuqoridagi misollarda ishlatilgan kodlash ASCII 7 deb nomlanadi . 7 va (Amerika) inglizcha matnni saqlash uchun juda yaxshi. Boshqa tillar inglizcha bo'lmagan belgilarga ruxsat berish uchun boshqa kodlashni talab qiladi, masalan "ö" .
ASCII baytda faqat 8 bitdan 7tasini ishlatadi , shuning uchun boshqa bir qancha kodlar faqat ASCII kengaytmalari bo'lib, u erda 0xxxxxxx shaklidagi har qanday raqam ASCII kodlashiga mos keladi va 1xxxxxxx shaklidagi raqamlar ma'lum tillar to'plami uchun har xil belgilarni ko'rsatadi. . Ushbu shaklning ba'zi umumiy kodlashlari ISO 8859 kodlashlar oilasi, masalan, G'arbiy Evropa tillari uchun ISO-8859-1 yoki Lotin-1, Sharqiy Evropa tillari uchun ISO-8859-2 yoki Lotin-2.
Baytning barcha 8 bitidan foydalansangiz ham, faqat 256 ( 2 8 ) xil belgini kodlash mumkin . Bir nechta Osiyo va O'rta Sharq mamlakatlarida bir necha ming xil belgilar ishlatilgan yozma tillar mavjud (masalan, yapon kanji ideograflari). Bu tillarda matnni saqlash uchun har bir belgini saqlash uchun bir nechta baytdan foydalaniladigan ko'p baytli kodlash sxemasidan foydalanish kerak.
UNICODE - bu dunyoning barcha tillarida barcha belgilar uchun kodlashni ta'minlashga urinish. Har bir belgi o'z raqamiga ega, ko'pincha U+xxxxxx shaklida yoziladi . Misol uchun, xat `A" deb U + 000041 7 . 8 va xat O `" deb U + 0000F6 . UNICODE minglab belgilarni kodlaydi, shuning uchun har bir belgini saqlash uchun bir nechta bayt kerak bo'ladi. Windowsda UNICODE matni odatda har bir belgiga ikki baytdan foydalanadi; Linuxda baytlar soni qaysi belgilar saqlanganiga qarab o'zgaradi (agar matn faqat ASCII bo'lsa, har bir belgiga faqat bitta bayt kerak bo'ladi).
Masalan, "shunchaki sinov" matni quyida Microsoft Notepad orqali uch xil kodlashda saqlangan: ASCII, UNICODE va UTF-8.
0: 6a 75 73 74 20 74 65 73 74 69 6e 67 | faqat sinov
ASCII formati har bir belgiga bitta baytni o'z ichiga oladi. To'rtinchi bayt - bu "t" harfi uchun ASCII kodi bo'lgan 116 kasr qiymati uchun ikkilik kod . Biz bu bayt naqshini yana bir necha marta ko'rishimiz mumkin, qayerda matnda "t" bo'lsa.
0: ff fe 6a 00 75 00 73 00 74 00 20 00 | ..shunchaki.
12: 74 00 65 00 73 00 74 00 69 00 6e 00 | testin
24: 67 00 | g.
UNICODE formati ASCII formatidan ikki jihatdan farq qiladi. ASCII faylidagi har bir bayt uchun hozirda ikkita bayt bor, bittasida biz ko'rgan ikkilik kod, so'ngra barcha nollarni o'z ichiga olgan bayt. Boshida yana ikkita qo'shimcha bayt mavjud. Ular bayt tartib belgisi ( BOM ) deb nomlanadi va matndagi har bir harfni tashkil etuvchi ikkita baytning tartibini (endilik) ko'rsatadi.
0: ef bb bf 6a 75 73 74 20 74 65 73 74 | ... faqat sinov
12: 69 6e 67 | ing
UTF-8 formati asosan ASCII formati bilan bir xil; har bir harf faqat bitta baytga ega, ikkilik kodi avvalgidek, chunki bularning barchasi ingliz tilidagi keng tarqalgan harflar. Farqi shundaki, BOM sifatida harakat qilishning boshida uchta bayt bor. 7 . 9
7 . 4 . 6 Birlik yoki yorliqli ma'lumotlar
Ma'lum diapazonda qiymatlarni saqlashda, bu bilimlardan foydalanish foydali bo'lishi mumkin. Masalan, biz jins haqida ma'lumot saqlamoqchimiz. (Odatda) faqat ikkita mumkin bo'lgan qiymat bor: erkak va ayol . Ushbu ma'lumotni saqlashning bir usuli matnli bo'ladi: "erkak" va "ayol" . Biroq, bu yondashuv har bir kuzatuv uchun kamida 4-6 baytni oladi. Biz ma'lumotni butun son sifatida saqlash orqali yaxshiroq qilishimiz mumkin, bunda 1 erkak va 2 ayolni ifodalaydi, shuning uchun har bir kuzatuv uchun atigi bir bayt ishlatiladi. Erkakni "yoqish" va ayolni "o'chirish" bilan, har bir kuzatish uchun biz bir oz yaxshiroq ish qilishimiz mumkin edi.
Boshqa tomondan, "erkak" ni saqlash chalkashlikka olib kelishi ehtimoli kamroq - 1 -ni saqlash yoki "yoqish" ni biroz o'rnatish; u ko'p eslash oson yoki sezgi deb "erkak" uchun javob erkak . Bu bizni ideal echimga olib keladi, bu erda faqat raqam saqlanadi, lekin "erkak" ni 1 ga tegishli kodlash ham saqlanadi.
7 . 4 . 6 . 1 sanalar
Sanalar odatda matn sifatida saqlanadi, masalan, 2006 yil 1 -fevral , yoki raqam sifatida, masalan, 1970 yildan keyingi kunlar soni. Turli omillar tufayli bir qator asoratlar paydo bo'ladi:
Do'stlaringiz bilan baham: |