This commit is contained in:
RadinPirouz
2026-05-18 23:22:51 +03:30
commit bfb0532460

520
1.md Normal file
View File

@@ -0,0 +1,520 @@
حل تمرین‌های زوج فصل ۱:
## ۱
با فرض رایج `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 |