CodeStep
Mavzularga qaytish

1.1.1 · MAVZU

Ma’lumotlarni mashina xotirasida ifodalash

20 ta masala. Masala shartini ko‘rib, yechishni boshlang.

Namuna masalalar 3 ta yechim

Masalalar 20 ta

Namuna masalalar

Bu namunalarda butun sonlarni ikkilik sanoq sistemasiga o‘tkazish va berilgan razryadda ifodalash o‘rganiladi. Manfiy sonlar qo‘shimcha kod (two’s complement) usulida ifodalanadi.

1-NAMUNAVIY MASALA

Manfiy sonni 12 bitda ifodalash

N = −858 butun manfiy son berilgan. Mashina razryadi k = 12 ga teng. Ushbu manfiy butun sonni mashina xotirasida ifodalang.

Bosqichma-bosqich yechim

  1. Avval sonning modulini, ya’ni 858 ni ikkilik sanoq sistemasiga o‘tkazamiz. Buning uchun sonni 2 ga ketma-ket bo‘lib, qoldiqlarni oxiridan boshiga qarab yozamiz. Natija 10 bitni egallaydi.

    858₁₀ = 1101011010₂
  2. Mashina razryadi 12 bit bo‘lgani uchun boshiga 2 ta nol qo‘shamiz.

    001101011010
  3. Manfiy sonning qo‘shimcha kodini olish uchun barcha bitlarni teskarisiga almashtiramiz: 0 o‘rniga 1, 1 o‘rniga 0 yozamiz.

    001101011010 → 110010100101
  4. Hosil bo‘lgan songa ikkilik sanoq sistemasida 1 qo‘shamiz. Shu bilan −858 ning 12 bitli qo‘shimcha kodi hosil bo‘ladi.

    110010100101₂ + 1₂ = 110010100110₂

Yakuniy javob

−858₁₀ = 110010100110₂ (12 bitli qo‘shimcha kod)

2-NAMUNAVIY MASALA

Musbat sonni 15 bitda ifodalash

N = 5656 butun musbat son berilgan. Mashina razryadi k = 15 ga teng. Ushbu manfiy emas butun sonni mashina xotirasida ifodalang.

Bosqichma-bosqich yechim

  1. 5656 ni 2 ga ketma-ket bo‘lamiz. Har bir bo‘lishdagi qoldiqni oxiridan boshiga qarab o‘qib, sonning ikkilik yozuvini olamiz. Bu yozuv 13 bitdan iborat.

    5656₁₀ = 1011000011000₂
  2. 15 bitni to‘ldirish uchun boshiga 2 ta nol qo‘shamiz. Boshiga nol qo‘shish sonning qiymatini o‘zgartirmaydi.

    1011000011000 → 001011000011000
  3. Son musbat bo‘lgani uchun bitlarni teskarilash yoki 1 qo‘shish kerak emas. To‘ldirilgan ikkilik yozuv sonning xotiradagi ko‘rinishi bo‘ladi.

    001011000011000

Yakuniy javob

5656₁₀ = 001011000011000₂ (15 bit)

3-NAMUNAVIY MASALA

Qo‘shimcha koddagi manfiy sonni o‘nlikka o‘tkazish

Mashina xotirasida ifodalangan manfiy butun son (ikkilik) N = 1000111111111011 berilgan. Ushbu sonning 10 lik sanoq sistemasida qanday son ekanligini aniqlang.

Bosqichma-bosqich yechim

  1. Berilgan yozuv 16 bitdan iborat. Uni 16 bitli qo‘shimcha kod deb olamiz. Bu usulda eng chapdagi bit 1 bo‘lsa, son manfiy bo‘ladi.

    N = 1000111111111011₂
  2. Sonning modulini topish uchun barcha bitlarni teskarisiga almashtiramiz.

    1000111111111011 → 0111000000000100
  3. Hosil bo‘lgan ikkilik songa 1 qo‘shamiz.

    0111000000000100₂ + 1₂ = 0111000000000101₂
  4. Natijani o‘nlik sanoq sistemasiga o‘tkazamiz. Buning uchun 1 turgan razryadlarning qiymatlarini qo‘shamiz.

    0111000000000101₂
    = 2¹⁴ + 2¹³ + 2¹² + 2² + 2⁰
    = 16384 + 8192 + 4096 + 4 + 1
    = 28677₁₀
  5. Dastlabki son manfiy bo‘lgani uchun topilgan modul oldiga minus ishorasini qo‘yamiz.

    N = −28677

Yakuniy javob

1000111111111011₂ = −28677₁₀ (16 bitli qo‘shimcha kod)