Binary — ikki qiymatli sanoq tizimi yoki shu tizim asosida ifodalangan ma’lumot. Kompyuter texnikasida bu qiymatlar odatda 0 va 1 bitlari bilan belgilanadi.
“Binary” atamasi bir nechta kontekstda ishlatiladi:
- binary sanoq tizimi;
- binary data;
- compile qilingan executable yoki library;
- binary protocol;
- binary file.
Bit
Binary tizimning eng kichik birligi bit.
Bit ikki holatdan birini saqlaydi:
0
1
Elektron qurilmada bu holatlar voltage diapazoni, charge, magnetik yo‘nalish yoki boshqa fizik holat bilan ifodalanishi mumkin.
Bayt
Ko‘p tizimda 8 bit bir byte hosil qiladi.
10101100
8 bit:
2^8 = 256
xil kombinatsiyani ifodalaydi.
Unsigned byte qiymati odatda 0 dan 255 gacha.
Binary sanoq tizimi
Decimal tizim 10 asosga ega. Binary tizim 2 asosga ega.
Masalan:
1011₂
decimal qiymat:
1×2³ + 0×2² + 1×2¹ + 1×2⁰
= 8 + 0 + 2 + 1
= 11
Har pozitsiya 2ning darajasini bildiradi.
Hexadecimal
Uzun binary qiymatlarni o‘qish qiyin.
Hexadecimal har 4 bitni bitta belgi bilan ifodalaydi.
1010 1111
A F
Natija:
0xAF
Memory address, machine code va bit masklarda hexadecimal keng qo‘llanadi.
Signed son
Signed integer uchun eng keng tarqalgan representation — two’s complement.
8-bit misol:
00000001 = 1
11111111 = -1
10000000 = -128
01111111 = 127
Eng yuqori bit sign bilan bog‘liq, ammo qiymat oddiy sign-magnitude usulida hisoblanmaydi.
Binary data
Text sifatida talqin qilinmaydigan har qanday baytlar ketma-ketligi binary data deb atalishi mumkin.
Misollar:
- rasm;
- audio;
- video;
- executable;
- compressed archive;
- database page;
- encrypted data.
Binary data ichida istalgan byte, jumladan 0x00 mavjud bo‘lishi mumkin.
Binary file
Binary file ma’lum strukturaga ega baytlar to‘plami.
Unda:
bo‘lishi mumkin.
Format specification bo‘lmasa baytlarning ma’nosini aniqlash qiyin.
Text va binary
Text ham aslida baytlardan iborat, ammo encoding orqali belgilarga talqin qilinadi.
Text mode ayrim platformada:
- newline conversion;
- end-of-file semantikasi;
- encoding
qo‘llashi mumkin.
Binary mode baytlarni o‘zgartirmasdan o‘qish va yozishni maqsad qiladi.
Executable binary
Compiler va linker yaratgan executable ko‘pincha “binary” deb ataladi.
U:
saqlaydi.
Formatlar:
- ELF;
- PE;
- Mach-O.
Executable binary ma’lum OS va architecturega bog‘liq.
Binary compatibility
Eski compile qilingan dastur yangi library yoki runtime bilan qayta compile qilinmasdan ishlasa binary-compatible hisoblanadi.
Bu ABIga bog‘liq:
- symbol;
- calling convention;
- structure layout;
- type size;
- vtable.
Source compatibility binary compatibility’ni avtomatik bermaydi.
Binary protocol
Binary protocol xabarlarni text satr emas, aniq bayt fieldlari bilan ifodalaydi.
Afzalliklari:
Kamchiliklari:
- inson ko‘zi bilan o‘qish qiyin;
- debugging uchun maxsus decoder;
- endianness va alignment;
- versioning murakkabligi.
Field layout
Binary format quyidagilarni aniq belgilaydi:
- field offset;
- bit width;
- signed yoki unsigned;
- byte order;
- length;
- optional field;
- padding;
- alignment.
C structure memorysini to‘g‘ridan-to‘g‘ri protocol sifatida yuborish portable emas.
Endianness
Ko‘p baytli qiymat baytlar tartibiga ega.
32-bit qiymat:
0x12345678
Big-endian:
12 34 56 78
Little-endian:
78 56 34 12
Format byte orderni explicit belgilaydi.
Bit mask
Binary qiymatning alohida bitlari flag sifatida ishlatiladi.
Misol:
00000101
bu 0- va 2-bit yoqilganini bildirishi mumkin.
AND, OR, XOR va shift orqali bitlar boshqariladi.
Binary serialization
Object fieldlari binary formatga aylantiriladi.
Format:
bo‘lishi mumkin.
Serialization format object memory layoutidan mustaqil bo‘lishi kerak.
Base64
Binary data text-only kanal orqali yuborilganda Base64 bilan kodlanishi mumkin.
Har 3 byte taxminan 4 text belgiga aylanadi.
Bu encoding, encryption emas.
Hajm qariyb uchdan birga oshadi.
Binary diff
Ikki binary artifact orasidagi farq block yoki byte darajasida hisoblanadi.
Delta update faqat o‘zgargan qismlarni tarqatadi.
Compiler outputidagi kichik source o‘zgarishi katta binary diff yaratishi mumkin, chunki address va layoutlar siljiydi.
Debugging
Binary tahlil vositalari:
Raw baytlar format specification va architecture bilan birga talqin qilinadi.
Xavfsizlik
Binary parser untrusted input bilan ishlaganda:
- integer overflow;
- length xatosi;
- out-of-bounds;
- malformed field;
- decompression bomb;
- parser differential
xavfi mavjud.
Length va offsetlar fayl hajmi bilan tekshiriladi.
Binary-safe API
Binary data bilan ishlaydigan API lengthni alohida saqlaydi va NUL bilan tugashga tayanmaydi. Text APIga tasodifan berilgan binary truncation yoki encoding xatosiga olib kelishi mumkin.
Entropy
Compressed yoki encrypted binary ko‘pincha yuqori entropiyali ko‘rinadi. Bu uning albatta shifrlanganini isbotlamaydi. File format headeri, metadata va cryptographic protocol alohida tekshiriladi.
Canonical binary format
Digital signature va consensus uchun map tartibi, integer encoding va optional fieldlar canonical shaklda yoziladi. Aks holda bir xil ma’no turli baytlar hosil qilib, hashlar mos kelmaydi.
Bog‘liq tushunchalar
Bit, Byte, Binary number, Hexadecimal, Two’s complement, Binary file, Binary protocol, Executable, Endianness, Serialization