Mundarija (27)
- Bu darsda
- 1. Nega bu kerak?
- 2. O'n oltilik sistema (hexadecimal)
- 2.1 16 ta raqam qayerdan olinadi?
- 2.2 Ikkilikdan hex'ga: 4 tadan guruhlash
- 2.3 Hex'dan o'nlikka: xona qiymatlari
- 2.4 O'nlikdan hex'ga: 16 ga bo'lish
- 2.5 0x belgisi
- 3. Sakkizlik sistema (octal)
- 4. Bu sistemalarni qayerda uchratamiz?
- 4.1 Veb-ranglar: #ff8800
- 4.2 Fayl ruxsatlari: chmod 755
- 4.3 Boshqa joylar
- 5. Javobni qanday tekshirish mumkin?
- 5.1 Kalkulyator bilan
- 5.2 JavaScript bilan (oldindan bir qarash)
- 6. Ko'p uchraydigan xatolar
- 6.1 Harflarni noto'g'ri qiymatlash
- 6.2 Chapdan guruhlash
- 6.3 Hex'dagi 10 ni o'n deb o'qish
- 6.4 Sakkizlikda 8 yoki 9 ni ishlatish
- 7. Mashqlar
- 1-mashq (oson): Ikkilikdan hex'ga
- 2-mashq (o'rta): Ranglarni o'qish
- 3-mashq (qiyin): Ruxsat va o'tkazish
- 8. Real ishda
- Xulosa
O'n oltilik (hex) va sakkizlik sanoq sistemalari: ranglar va chmod ortidagi raqamlar
Qisqacha: O'n oltilik (hex) sistema uzun ikkilik sonni qisqa yozish usuli: har 4 bit bitta hex belgiga aylanadi, masalan
11111111→FF. Sakkizlik (octal) sistemada esa har 3 bit bitta raqam bo'ladi. Hex'ni rang kodlarida (#ff8800), sakkizlikni fayl ruxsatlarida (chmod 755) uchratasiz.
Bu darsda
- Nega dasturchilarga ikkilikdan tashqari 16 lik va 8 lik sistemalar kerakligini tushunasiz.
- Hex'dagi A–F harflari qaysi sonlar ekanini bilasiz.
- Ikkilik, o'nlik, hex va sakkizlik orasida o'tkaza olasiz.
#ff8800rang kodi vachmod 755yozuvini "o'qiy" olasiz.- Javobingizni kalkulyatorda tekshirishni o'rganasiz.
Oldin bilishingiz kerak: Nega 0 va 1: ikkilik sanoq sistemasi — ayniqsa xona qiymatlari va 2 ga bo'lish usuli.
1. Nega bu kerak?
Ikkilik sanoq sistemasi darsida kompyuter hamma narsani 0 va 1 bilan yozishini ko'rdik. Lekin odam uchun mana bunday qatorni o'qish noqulay:
1101111010101101Ko'z charchaydi, bitta raqamni tushirib qoldirish oson. Buni do'stingizga telefonda aytib berishni tasavvur qiling!
Unda nega o'nlik sistemaga o'tkazmaymiz? Chunki o'nlik son bitlar bilan "chiroyli" bog'lanmaydi. O'nlikdagi raqamga qarab, qaysi bitlar 1 ekanini darhol ayta olmaysiz — har safar to'liq hisoblash kerak.
Dasturchilar boshqa yo'l topgan. 16 va 8 — 2 ning darajalari (16 = 2⁴, 8 = 2³). Shuning uchun:
- har 4 bit aniq bitta o'n oltilik raqamga teng;
- har 3 bit aniq bitta sakkizlik raqamga teng.
Yuqoridagi 16 bitlik qator hex'da atigi 4 belgi bo'ladi: DEAD. Qanday qilib — hozir ko'ramiz.
2. O'n oltilik sistema (hexadecimal)
2.1 16 ta raqam qayerdan olinadi?
O'n oltilik sanoq sistemasi (hexadecimal, qisqasi hex) — 16 ta raqamdan foydalanadigan sanoq usuli. Bizda esa bor-yo'g'i 10 ta raqam bor (0–9). Yetmagan 6 tasining o'rniga lotin harflari olinadi:
| O'nlik | Ikkilik (4 bit) | Hex |
|---|---|---|
| 0–9 | 0000–1001 |
0–9 |
| 10 | 1010 |
A |
| 11 | 1011 |
B |
| 12 | 1100 |
C |
| 13 | 1101 |
D |
| 14 | 1110 |
E |
| 15 | 1111 |
F |
Harflarni eslab qolish uchun: A dan boshlab sanang. A = 10, B = 11, ... F = 15. Katta yoki kichik harf farqi yo'q: FF va ff — bitta son.
2.2 Ikkilikdan hex'ga: 4 tadan guruhlash
Bu eng ko'p ishlatiladigan o'tkazish. Qoida:
- Ikkilik sonni o'ngdan boshlab 4 tadan guruhlarga bo'ling.
- Chapdagi guruh 4 tadan kam bo'lsa, oldiga
0qo'shing. - Har guruhni jadvaldan hex belgiga almashtiring.
Birinchi misol — darsning boshidagi qator:
Ikkilik: 1101 1110 1010 1101
Hex: D E A DNatija: DEAD. 16 ta raqam o'rniga 4 ta belgi!
Ikkinchi misol — 101101 (6 bit):
Guruhlaymiz: 10 1101
To'ldiramiz: 0010 1101
Hex: 2 DNatija: 2D.
Teskari yo'l ham shunday: har bir hex belgini 4 bitga yoyasiz. 3A → 0011 1010.
Bundan muhim xulosa: 1 bayt (8 bit) har doim aniq 2 ta hex belgi bilan yoziladi. 00 dan FF gacha.
2.3 Hex'dan o'nlikka: xona qiymatlari
Ikkilikda xona qiymatlari 1, 2, 4, 8 edi. Hex'da har bir xona o'ngdagisidan 16 barobar katta:
Xona qiymati: 4096 256 16 1
Daraja: 16³ 16² 16¹ 16⁰Usul ikkilikdagidek: har belgini o'z xonasiga ko'paytirib, qo'shamiz.
2F= 2 × 16 + 15 × 1 = 32 + 15 = 47FF= 15 × 16 + 15 × 1 = 240 + 15 = 25510= 1 × 16 + 0 × 1 = 16 (o'n emas!)
2.4 O'nlikdan hex'ga: 16 ga bo'lish
Ikkilikdagi "2 ga bo'lish" usulini eslang. Bu yerda 2 o'rniga 16 ga bo'lamiz. Masalan, 200:
| Bo'lish | Butun qismi | Qoldiq | Hex |
|---|---|---|---|
| 200 ÷ 16 | 12 | 8 | 8 |
| 12 ÷ 16 | 0 | 12 | C |
Qoldiqlarni pastdan tepaga o'qiymiz: C8. Tekshiramiz: 12 × 16 + 8 = 200. To'g'ri!
2.5 0x belgisi
10 — bu o'n mi, o'n olti mi? Adashmaslik uchun dasturlashda hex son oldiga 0x qo'yiladi: 0x10 = 16, 0xFF = 255. 0x ni ko'rsangiz — "bu hex son" deb o'qing.
Tekshirib ko'ring:
0x1Fo'nlikda nechaga teng? Ikkilikdagi1100 1010hex'da qanday yoziladi?
Javob
0x1F = 1 × 16 + 15 = 31 (F = 15). 1100 = C, 1010 = A, demak 1100 1010 = CA. Har 4 bitlik guruh — bitta hex belgi.
3. Sakkizlik sistema (octal)
Sakkizlik sanoq sistemasi (octal) — faqat 8 ta raqam ishlatiladigan sistema: 0, 1, 2, 3, 4, 5, 6, 7. Unda 8 va 9 raqamlari umuman yo'q.
Har bir sakkizlik raqam aniq 3 bitga teng (8 = 2³):
| Sakkizlik | Ikkilik (3 bit) |
|---|---|
| 0 | 000 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
Hex bilan bir xil g'oya, faqat guruh 4 emas, 3 bitdan:
Ikkilik: 111 101 101
Sakkizlik: 7 5 5Xona qiymatlari esa 1, 8, 64... bo'ladi. Masalan, 755 = 7 × 64 + 5 × 8 + 5 × 1 = 448 + 40 + 5 = 493.
Dasturlash tillarida sakkizlik son oldiga 0o yoziladi: 0o755. Linux'dagi chmod buyrug'ida esa belgisiz yoziladi: chmod 755.
Tekshirib ko'ring: Nega sakkizlikda
8raqami yo'q?110 100ikkilik soni sakkizlikda qanday yoziladi?
Javob
Sakkizlikda 8 ta raqam bor: 0 dan 7 gacha. Ya'ni 7 dan keyin xona to'ladi va 10 yoziladi — xuddi o'nlikda 9 dan keyin 10 kelgani kabi. Endi misol: 110 = 6, 100 = 4, demak 64 (sakkizlikdagi oltmish to'rt emas, "olti-to'rt").
4. Bu sistemalarni qayerda uchratamiz?
4.1 Veb-ranglar: #ff8800
Ekrandagi har bir rang uchta "chiroq"ning aralashmasidan chiqadi: qizil (red), yashil (green) va ko'k (blue). Qisqasi — RGB. Har bir chiroqning kuchi 1 bayt, ya'ni 0 dan 255 gacha.
1 bayt = 2 ta hex belgi. Demak, butun rang 6 ta hex belgi bilan yoziladi:
/* #RRGGBB: qizil, yashil, ko'k */
color: #ff8800;Bu yerda:
ff— qizil: 15 × 16 + 15 = 255, ya'ni to'liq.88— yashil: 8 × 16 + 8 = 136, ya'ni o'rtacha.00— ko'k: 0, umuman yo'q.
To'liq qizil va yarimta yashil aralashsa — to'q sariq (apelsin rang) chiqadi. #000000 — qora (hamma chiroq o'chiq), #ffffff — oq (hammasi to'liq yoniq).
Qisqa yozuv ham bor: #f80 — bu #ff8800 ning o'zi, har belgi ikki marta takrorlanadi. Ranglarni CSS ranglari darsida to'liq o'rganamiz.
4.2 Fayl ruxsatlari: chmod 755
Linux va serverlarda har bir fayl uchun uch xil ruxsat bor:
| Ruxsat | Belgi | Qiymati | Ikkilikda |
|---|---|---|---|
| O'qish (read) | r |
4 | 100 |
| Yozish (write) | w |
2 | 010 |
| Bajarish (execute) | x |
1 | 001 |
Ruxsatlarni qo'shib, bitta raqam hosil qilinadi: 4 + 2 + 1 = 7 — hammasi mumkin. 4 + 1 = 5 — o'qish va bajarish. Bitta sakkizlik raqam (3 bit) uchala ruxsatni to'liq ifodalaydi.
chmod — Linux'da ruxsat beradigan buyruq. chmod 755 dagi uch raqam uch xil odam uchun:
7(rwx) — fayl egasi: hammasi mumkin.5(r-x) — egasining guruhidagilar: o'qish va bajarish.5(r-x) — qolgan hamma: o'qish va bajarish.
Egasi, guruh va buyruqlarni hozir yodlash shart emas. Ularni fayl ruxsatlari darsida terminalda amalda qilamiz.
4.3 Boshqa joylar
Hex dasturchi hayotida juda ko'p uchraydi. Hozircha faqat tanib qo'ying:
- Xato kodlari. Windows xatolarida
0x80070005kabi kodlarni ko'rgandirsiz. Bu hex son. - Xotira manzillari. Dastur buzilganda
0x7ffd5c3a1b20kabi yozuv chiqishi mumkin — bu RAM'dagi joyning manzili. - Qurilma manzili. Wi-Fi sozlamalaridagi
3C:22:FB:0A:1D:7Ekabi MAC-manzil — 6 bayt, har biri 2 hex belgi. - Emoji va harflar kodi. Kulib turgan yuz emojisining kodi
U+1F600— bu ham hex. Uni matn kodlash darsida ko'ramiz.
5. Javobni qanday tekshirish mumkin?
5.1 Kalkulyator bilan
Windows'dagi Calculator ilovasini oching va menyudan Programmer rejimini tanlang. U yerda to'rt qator bor: HEX (o'n oltilik), DEC (o'nlik), OCT (sakkizlik), BIN (ikkilik). Bitta qatorga son kiritsangiz, qolganlarida uning boshqa ko'rinishlari chiqadi.
macOS'dagi Calculator'da ham Cmd + 3 bilan shunday rejim ochiladi.
5.2 JavaScript bilan (oldindan bir qarash)
JavaScript'ni hali o'rganmadik. Quyidagi kodni tushunishingiz shart emas — faqat har qator oxiridagi izohga (natijaga) qarang. Saytda "Ishga tushir" tugmasini bossangiz, natijani o'zingiz ko'rasiz.
// Bitta son — to'rt xil yozuv
console.log(0b11111111); // 255
console.log(0o377); // 255
console.log(0xff); // 255
// O'nlik sonni boshqa sistemaga o'tkazish
console.log((245).toString(2)); // 11110101
console.log((245).toString(8)); // 365
console.log((245).toString(16)); // f5
// Hex matnni o'nlikka o'tkazish
console.log(parseInt("f5", 16)); // 2450b, 0o, 0x — bu darsda ko'rgan belgilarning o'zi. Ular bilan yozilgan son xotirada baribir bir xil bitlar bo'lib turadi.
6. Ko'p uchraydigan xatolar
6.1 Harflarni noto'g'ri qiymatlash
Ba'zilar A ni 1 deb o'ylaydi, chunki u alifboning birinchi harfi. Aslida A = 10, chunki 0–9 raqamlari band. Qolganlari: B = 11, C = 12, D = 13, E = 14, F = 15.
6.2 Chapdan guruhlash
101101 ni chapdan guruhlasangiz: 1011 01 → B va 1 → B1. Bu xato! To'g'risi o'ngdan: 10 1101 → 0010 1101 → 2D. Har doim o'ngdan 4 tadan (sakkizlikda 3 tadan) ajrating.
6.3 Hex'dagi 10 ni o'n deb o'qish
0x10 — o'n emas, o'n olti. 0x belgisini ko'rsangiz, xona qiymatlari 1, 16, 256 ekanini eslang.
6.4 Sakkizlikda 8 yoki 9 ni ishlatish
Sakkizlikda faqat 0–7 bor. JavaScript'da 0o789 deb yozsangiz, dastur umuman ishga tushmaydi:
const xatoSon = 0o789;SyntaxError: Invalid or unexpected tokenTarjimasi: "Noto'g'ri yoki kutilmagan belgi". JavaScript 0o7 ni tushundi, lekin 8 ni sakkizlik son ichida kutmagan edi.
7. Mashqlar
1-mashq (oson): Ikkilikdan hex'ga
1111 0001 sonining hex ko'rinishini toping.
Javob: 0x
Yechim
Bitlar allaqachon 4 tadan ajratilgan:
1111= 15 =F.0001= 1 =1.
Natija: 0xF1. O'nlikda tekshirsak: 15 × 16 + 1 = 241.
2-mashq (o'rta): Ranglarni o'qish
#00ff00qanday rang? Javob:#808080rangida qizil, yashil va ko'k qiymatlari o'nlikda nechaga teng? Bu qanday rang bo'lishi mumkin?
Yechim
- Qizil
00= 0, yashilff= 255, ko'k00= 0. Faqat yashil to'liq yoniq — toza yashil rang. - Uchala qiymat ham
80= 8 × 16 + 0 = 128, ya'ni o'rtacha. Uch rang teng miqdorda aralashsa, kulrang chiqadi. 0 da qora, 255 da oq, 128 da — o'rtacha kulrang.
3-mashq (qiyin): Ruxsat va o'tkazish
- Fayl egasi faylni o'qiy va yoza olsin. Guruh va qolganlar faqat o'qisin.
chmoduchun qanday raqam kerak? - Shu raqamni
rwxko'rinishida yozing. - O'nlikdagi 200 ni hex'ga o'tkazing.
Yechim
- Egasi: o'qish (4) + yozish (2) = 6. Guruh: 4. Qolganlar: 4. Javob: 644. Bu oddiy fayllar uchun eng ko'p uchraydigan ruxsat.
- 6 =
110=rw-, 4 =100=r--. Demak:rw-r--r--. Ikkilik bitlar varwxharflari bir-biriga mos kelishiga e'tibor bering:1— ruxsat bor,0— yo'q (-). - 200 ÷ 16 = 12, qoldiq 8. 12 ÷ 16 = 0, qoldiq 12 (C). Pastdan tepaga: C8. Tekshirish: 12 × 16 + 8 = 200.
8. Real ishda
- Frontend: dizayner sizga rangni
#1E90FFko'rinishida beradi. Siz uni CSS'ga ko'chirasiz va kerak bo'lsa, qizil-yashil-ko'k qismlarini o'zgartirasiz. - Server: saytni serverga joylashtirganda fayl ruxsatlarini
chmod 644vachmod 755bilan sozlaysiz. Noto'g'ri ruxsat — xavfsizlik teshigi yoki "Permission denied" xatosi. - Xatoni topish (debug): xato xabarlaridagi
0x...kodlarini Google'ga aynan shunday yozib qidirasiz. - Intervyu: "
#ff0000qanday rang?" yoki "chmod 777nega xavfli?" kabi savollar uchraydi. Ikkinchisining javobi: 7 =rwx, ya'ni hamma faylni o'zgartira oladi.
Xulosa
- Hex (16 lik) — har 4 bitni 1 belgiga jamlaydi. Raqamlar: 0–9 va A–F (A = 10, F = 15). Belgisi:
0x. - Sakkizlik (8 lik) — har 3 bitni 1 raqamga jamlaydi. Raqamlar: 0–7. Belgisi:
0o. - Ikkilikdan hex'ga — o'ngdan 4 tadan guruhlab, jadvaldan almashtiriladi.
- Hex'dan o'nlikka — xona qiymatlari 1, 16, 256 bilan; o'nlikdan hex'ga — 16 ga bo'lib.
- 1 bayt = 2 hex belgi, shuning uchun rang
#RRGGBBko'rinishida yoziladi. chmod 755— egasi, guruh va qolganlar uchun uchta sakkizlik raqam: r = 4, w = 2, x = 1.
Keyingi dars: CPU: kompyuterning miyasi — protsessor bu bitlar ustida qanday qilib soniyasiga milliardlab amal bajarishini ko'ramiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!