حل تمرین‌های زوج فصل ۱: ## ۱-۲ با فرض رایج `K = 2^10` و `M = 2^20`: الف) `32K = 32 × 1024 = 32768` بایت ب) `64M = 64 × 2^20 = 67108864` بایت پ) برای `6.4G` دو برداشت رایج وجود دارد: اگر `G = 10^9` باشد: `6.4G = 6400000000` بایت اگر `G = 2^30` باشد: `6.4 × 2^30 = 6871947673.6` که برای تعداد دقیق بایت عدد صحیح نمی‌شود؛ تقریباً `6871947674` بایت. --- ## ۱-۴ الف) `(4310)_5 = 4×5^3 + 3×5^2 + 1×5 + 0 = 580` ب) `(198)_12 = 1×12^2 + 9×12 + 8 = 260` --- ## ۱-۶ معادله در مبنای `r` است: `x^2 - 11x + 22 = 0` ریشه‌ها `3` و `6` هستند. پس: جمع ریشه‌ها: `3 + 6 = 9` در نتیجه: `(11)_r = r + 1 = 9` پس: `r = 8` کنترل با حاصل‌ضرب: `3 × 6 = 18` و: `(22)_8 = 2×8 + 2 = 18` پس مبنا برابر است با: `8` --- ## ۱-۸ الف) `(1.11010)_2` به مبنای ۱۶: `1.11010₂ = 1.D0₁₆ = 1.D₁₆` به ده‌دهی: `1 + 1/2 + 1/4 + 1/16 = 1.8125` پس: `(1.11010)_2 = (1.D)_16 = (1.8125)_10` ب) `(1110.10)_2` به مبنای ۱۶: `1110.10₂ = E.8₁₆` به ده‌دهی: `14 + 1/2 = 14.5` علت اینکه جواب قسمت ب، ۸ برابر قسمت الف است: عدد قسمت ب همان عدد قسمت الف است که ممیز دودویی آن ۳ رقم به راست رفته است؛ پس در `2^3 = 8` ضرب شده است. --- ## ۱-۱۰ عدد ده‌دهی `345`: روش مستقیم به دودویی: `345 = 256 + 64 + 16 + 8 + 1` پس: `345₁₀ = 101011001₂` روش از طریق مبنای ۱۶: `345₁₀ = 159₁₆` و: `1 5 9 = 0001 0101 1001` پس: `345₁₀ = 101011001₂` روش دوم سریع‌تر است، چون هر رقم شانزدهی مستقیم به ۴ بیت تبدیل می‌شود. --- ## ۱-۱۲ الف) اعداد دودویی `101` و `1011` جمع: `101 + 1011 = 10000` ضرب: `101 × 1011 = 110111` ب) اعداد شانزدهی `2E` و `34` جمع: `2E + 34 = 62` ضرب: `2E × 34 = 958` پس: `(2E)_16 + (34)_16 = (62)_16` `(2E)_16 × (34)_16 = (958)_16` --- ## ۱-۱۴ متمم‌های ۹ و ۱۰: | عدد | متمم ۹ | متمم ۱۰ | | ---------- | ---------- | ---------- | | `98127634` | `01872365` | `01872366` | | `72049900` | `27950099` | `27950100` | | `10000000` | `89999999` | `90000000` | | `00000000` | `99999999` | `00000000` | --- ## ۱-۱۶ متمم ۱ و متمم ۲ اعداد دودویی: | عدد | متمم ۱ | متمم ۲ | | ---------- | ---------- | ---------- | | `11101010` | `00010101` | `00010110` | | `01111110` | `10000001` | `10000010` | | `00000001` | `11111110` | `11111111` | | `10000000` | `01111111` | `10000000` | | `00000000` | `11111111` | `00000000` | --- ## ۱-۱۸ تفریق با استفاده از متمم ۲: الف) `11011 - 11001` اختلاف: `00010` ب) `110100 - 10101` ابتدا هم‌طول می‌کنیم: `110100 - 010101 = 011111` پ) `1011 - 110000` هم‌طول: `001011 - 110000` چون عدد اول کوچک‌تر است، نتیجه منفی می‌شود: `1011₂ - 110000₂ = -100101₂` ت) `101010 - 101011 = -1` پس: `-000001₂` --- ## ۱-۲۰ برای نمایش `+61` و `+27` در متمم ۲، حداقل ۷ بیت لازم است، چون بازه ۷ بیتی در متمم ۲ برابر است با: `-64` تا `+63` نمایش‌ها: | عدد | نمایش ۷ بیتی متمم ۲ | | ----- | ------------------- | | `+61` | `0111101` | | `+27` | `0011011` | | `-61` | `1000011` | | `-27` | `1100101` | اکنون عملیات‌ها: الف) `(+61) + (-27) = 34` `0111101 + 1100101 = 0100010` پس: `0100010₂ = 34₁₀` ب) `(+27) + (-61) = -34` `0011011 + 1000011 = 1011110` پس: `1011110₂ = -34₁₀` پ) `(-27) + (-61) = -88` عدد `-88` در ۷ بیت قابل نمایش نیست، چون از بازه `-64` تا `+63` خارج است. بنابراین سرریز رخ می‌دهد. ت) `(-27) + (+61) = 34` `1100101 + 0111101 = 0100010` پس: `0100010₂ = 34₁₀` --- ## ۱-۲۲ نمایش BCD: `965 = 1001 0110 0101` `672 = 0110 0111 0010` جمع BCD: یکان: `0101 + 0010 = 0111` دهگان: `0110 + 0111 = 1101` چون `1101` بزرگ‌تر از ۹ است، `0110` اضافه می‌کنیم: `1101 + 0110 = 1 0011` پس رقم دهگان `0011` و یک نقلی داریم. صدگان: `1001 + 0110 + 1 = 10000` تصحیح BCD: `10000 + 0110 = 1 0110` پس جواب نهایی: `0001 0110 0011 0111` یعنی: `965 + 672 = 1637` --- ## ۱-۲۴ عدد ده‌دهی: `6027` الف) کد BCD: `6 = 0110` `0 = 0000` `2 = 0010` `7 = 0111` پس: `6027 = 0110 0000 0010 0111` ب) کد افزونی ۳: هر رقم را با ۳ جمع می‌کنیم: `6 + 3 = 9 → 1001` `0 + 3 = 3 → 0011` `2 + 3 = 5 → 0101` `7 + 3 = 10 → 1010` پس: `6027 = 1001 0011 0101 1010` پ) کد ۲۴۲۱: طبق جدول کد ۲۴۲۱: `6 = 1100` `0 = 0000` `2 = 0010` `7 = 1101` پس: `6027 = 1100 0000 0010 1101` --- ## ۱-۲۶ برای ۵۲ کارت، حداقل تعداد بیت لازم: `2^5 = 32 < 52` `2^6 = 64 ≥ 52` پس ۶ بیت کافی است. یک روش مناسب: ۲ بیت برای خال کارت: | خال | کد | | --- | ---- | | خاج | `00` | | خشت | `01` | | دل | `10` | | پیک | `11` | ۴ بیت برای شماره کارت: | کارت | کد | | ---- | ------ | | A | `0001` | | 2 | `0010` | | 3 | `0011` | | 4 | `0100` | | 5 | `0101` | | 6 | `0110` | | 7 | `0111` | | 8 | `1000` | | 9 | `1001` | | 10 | `1010` | | J | `1011` | | Q | `1100` | | K | `1101` | پس کد هر کارت برابر است با: `کد خال + کد شماره کارت` مثلاً اگر پیک را `11` و K را `1101` بگیریم: `K پیک = 111101` --- ## ۱-۲۸ کدهای ASCII داده‌شده به حروف تبدیل می‌شوند: `1001010 = J` `1100001 = a` `1101110 = n` `1100101 = e` `0100000 = Space` `1000100 = D` `1101111 = o` `1100101 = e` پس رشته برابر است با: `Jane Doe` --- ## ۱-۳۰ در ASCII استاندارد ۷ بیتی، کاراکترهای قابل چاپ از کد `32` تا `126` هستند. تعدادشان: `126 - 32 + 1 = 95` از این ۹۵ کاراکتر: حروف: `26 + 26 = 52` ارقام: `10` پس کاراکترهای خاص: `95 - 52 - 10 = 33` بنابراین: تعداد کاراکترهای چاپی: `95` تعداد کاراکترهای خاص: `33` اگر فاصله را کاراکتر چاپی حساب نکنند، جواب‌ها به‌ترتیب `94` و `32` می‌شوند. --- ## ۱-۳۲ حالت ثبات ۱۲ بیتی: `100010010111` آن را به سه گروه ۴ بیتی تقسیم می‌کنیم: `1000 1001 0111` الف) اگر BCD باشد: `1000 = 8` `1001 = 9` `0111 = 7` پس: `897` ب) اگر کد افزونی ۳ باشد، از هر رقم ۳ کم می‌کنیم: `1000 = 8 → 8 - 3 = 5` `1001 = 9 → 9 - 3 = 6` `0111 = 7 → 7 - 3 = 4` پس: `564` پ) اگر کد `8-4-(-2)-(-1)` باشد: `1000 = 8` `1001 = 7` `0111 = 1` پس: `871` ت) اگر یک عدد دودویی باشد: `100010010111₂ = 897₁₆` و: `897₁₆ = 2199₁₀` پس مقدار ده‌دهی آن: `2199` --- ## ۱-۳۴ برای گیت AND سه‌ورودی: `F = A.B.C` برای گیت OR سه‌ورودی: `G = A + B + C` جدول درستی: | A | B | C | F = ABC | G = A+B+C | | - | - | - | ------- | --------- | | 0 | 0 | 0 | 0 | 0 | | 0 | 0 | 1 | 0 | 1 | | 0 | 1 | 0 | 0 | 1 | | 0 | 1 | 1 | 0 | 1 | | 1 | 0 | 0 | 0 | 1 | | 1 | 0 | 1 | 0 | 1 | | 1 | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 1 | 1 |