Bosh sahifa Wiki Binary

Binary

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:

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:

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:

  • schema-based;
  • self-describing;
  • fixed layout;
  • length-prefixed;
  • tag-based

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