חזור לתיקייה: שיעורי בית יבשים

גליון 1

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • חלק א'
  • חלק ב'

גליון 1

00440252

מערכות ספרתיות ומבנה המחשב

רשימות הרצאה לקריאה בשבת

גליון 1

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

חלק א'

תרגיל (1)

המר את המספר 111011111101111110111 מבינארי לקוד GrayGrayGray.

נשתמש בנוסחת ההמרה מבינארי לקוד graygraygray:

{gn=bngi=bi⊕bi+1=(bi+bi+1)(mod  2)i=(n−1),(n−2),…,1,0\begin{cases} g_{n}=b_{n} \\ g_{i}=b_{i}\oplus b_{i+1}=(b_{i}+b_{i+1})(mod\; 2)_{ \quad i=(n-1),(n-2),\dots,1,0} \end{cases}{gn​=bn​gi​=bi​⊕bi+1​=(bi​+bi+1​)(mod2)i=(n−1),(n−2),…,1,0​​ ⇓\Downarrow⇓ {g0=1⊕1=0g1=1⊕1=0g2=1⊕0=1g3=0⊕1=1g4=1⊕1=0g5=1⊕1=0g6=1\begin{cases} g_{0}= 1 \oplus1=0 \\ g_{1}=1\oplus1=0 \\ g_{2}=1\oplus0=1 \\ g_{3}=0\oplus1=1 \\ g_{4}=1\oplus1=0 \\ g_{5}=1\oplus1=0 \\ g_{6}=1 \end{cases}⎩⎨⎧​g0​=1⊕1=0g1​=1⊕1=0g2​=1⊕0=1g3​=0⊕1=1g4​=1⊕1=0g5​=1⊕1=0g6​=1​

ולכן, המספר הנתון בקוד graygraygray יהיה:

100110010011001001100
תרגיל (2)

בצע את הפעולה 10+(−22)10+(-22)10+(−22) בייצוג המשלים ל-2. ציין את התשובה בייצוג זה בדיוק של 666 סיביות.

תחילה נמיר את המספרים לבינארי בתצורת המשלים ל-2:

(10)10=23+21=(001010)2(10)_{10}=2^3+2^1=(001010)_{2}(10)10​=23+21=(001010)2​ (−22)10=25−23−21=(101010)2(-22)_{10}=2^5-2^3-2^1=(101010)_{2}(−22)10​=25−23−21=(101010)2​

כעת, נוכל לבצע את החיבור:

+001010101010110100\begin{matrix} + \\ \\ \end{matrix}\begin{matrix} 001010 \\ 101010 \\ \hline 110100 \end{matrix}+​001010101010110100​​

קיבלנו את המספר הבינארי:

110100110100110100

שערכו בבסיס עשרוני הוא −12-12−12 כנדרש.

תרגיל (3)

נתון הקוד הבא:

10011010110101010100\begin{matrix} 10011 \\ 01011 \\ 01010 \\ 10100 \end{matrix}10011010110101010100​

כמה מילים אפשר להוסיף לקוד מבלי לפגוע ביכולת לתקן ולגלות שגיאות?

נתחיל בלמצוא את מרחק המניג של המילים הנ"ל.
נסתכל על המילה השנייה: 01011 והמילה השלישית: 01010. המרחק בין המילים הוא 1 - הביט האחרון.
מרחק קוד הוא מינימום 1 ולכן זהו מרחק הקוד של הקוד.
ניתן לתקן מספר שגיאות כמרחק הקוד של הקוד מינוס אחד ולכן ניתן לתקן 0 שגיאות.
כל מילה שנוסיף בעלת 5 ביטים לא תרגע מיכולת תיקון השגיאות של הקוד שכן אין לו כזאת.
לכן, נוכל להוסיף בדיוק: 25−4=32−4=282^5-4=32-4=2825−4=32−4=28 מילים לקוד :)

תרגיל (4)

פשטו את הביטוי:

XY+X‾Z+YZ+WZX‾+YW(Z+X)XY+\overline{X}Z+YZ+WZ\overline{X}+YW(Z+X)XY+XZ+YZ+WZX+YW(Z+X)

נפרק את הביטוי:

XY+X‾Z+YZ+WZX‾+YW(Z+X)=  XY+X‾Z+WZX‾+YW(Z+X)קונצנזוס=  XY+X‾Z+YW(Z+X)בליעה(הראשון)=  XY(1+Y)+Z(X‾+YW)=  XY+Z(X‾+YW)ערכים שולטים=  XY+ZX‾+ZYW(X+X‾)X+X‾=1=  XY+ZX‾+ZYWX+ZYWX‾=  XY+XYWZ+X‾Z+X‾ZYW=  XY+X‾Zבליעה(הראשון)\begin{align*} & XY+\overline{X}Z+YZ+WZ\overline{X}+YW(Z+X) \\ =\; & XY+\overline{X}Z+WZ\overline{X}+YW(Z+X) & \R{\text{קונצנזוס}} \\ =\; & XY+\overline{X}Z+YW(Z+X) & \R{\text{בליעה(הראשון)}} \\ =\; & XY(1+Y)+Z(\overline{X}+YW) \\ =\; & XY+Z(\overline{X}+YW) & \R{\text{ערכים שולטים}} \\ =\; & XY+Z\overline{X}+ZYW(X+\overline{X}) & X+\overline{X}=1 \\ =\; & XY+Z\overline{X}+ZYWX+ZYW\overline{X} \\ =\; & XY+XYWZ+\overline{X}Z+\overline{X}ZYW \\ =\; & XY+\overline{X}Z & \R{\text{בליעה(הראשון)}} \end{align*}========​XY+XZ+YZ+WZX+YW(Z+X)XY+XZ+WZX+YW(Z+X)XY+XZ+YW(Z+X)XY(1+Y)+Z(X+YW)XY+Z(X+YW)XY+ZX+ZYW(X+X)XY+ZX+ZYWX+ZYWXXY+XYWZ+XZ+XZYWXY+XZ​קונצנזוסבליעה(הראשון)ערכים שולטיםX+X=1בליעה(הראשון)​

וזוהי התשובה.

תרגיל (5)

הוכח/הפרך: a⊕b=a‾⊕b‾a \oplus b=\overline{a}\oplus\overline{b}a⊕b=a⊕b.

הטענה נכונה.
הוכחה:
נעשה הוכחה באמצעות אינדוקציה שלמה:

aba‾b‾a⊕ba‾⊕b‾001100011011100111110000\begin{matrix} \begin{array}{|cc|cc|c|c|} \hline a & b & \overline{a} & \overline{b} & a \oplus b & \overline{a}\oplus\overline{b} \\ \hline 0 & 0 & 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 & 1 & 1 \\ 1 & 0 & 0 & 1 & 1 & 1 \\ 1 & 1 & 0 & 0 & 0 & 0 \\ \hline \end{array} \end{matrix}a0011​b0101​a1100​b1010​a⊕b0110​a⊕b0110​​​

ניתן לראות לפי האינדוקציה השלמה כי a⊕b=a‾⊕b‾a \oplus b= \overline{a}\oplus \overline{b}a⊕b=a⊕b.

הערה

ניתן גם להוכיח באמעות תכונת שער XORXORXOR הבאה: a⊕1=a‾a \oplus 1=\overline{a}a⊕1=a כך:

a‾⊕b‾=a⊕1⊕b⊕1=a⊕b⊕1⊕1=a⊕b⊕0=a⊕b\overline{a}\oplus\overline{b}=a \oplus 1 \oplus b \oplus 1=a \oplus b \oplus 1 \oplus 1= a \oplus b \oplus 0 =a \oplus ba⊕b=a⊕1⊕b⊕1=a⊕b⊕1⊕1=a⊕b⊕0=a⊕b

∎

תרגיל (6)

המר את קטע הקוד הבא משפת CCC לאסמבלי:

int a = 5, b = 7;
int temp = a;
a = b;
b = temp;

נשתמש ברגיסטר t0t_{0}t0​ לתיאור aaa, ברגיסטר t1t_{1}t1​ לתיאור bbb וברגיסטר t2t_{2}t2​ לתיאור temptemptemp. אזי:

addi t0,x0,5
addi t1,x0,7
add t2,x0,t0
add t0,x0,t1
add t1,x0,t2

חלק ב'

תרגיל (2)

נתון ש-(aN−1aN−2…a1a0)3=(V)10(a_{N-1}a_{N-2}\dots a_{1}a_{0})_{3}=(V)_{10}(aN−1​aN−2​…a1​a0​)3​=(V)10​. כלומר, ערכו של המספר aN−1aN−2…a1a0a_{N-1}a_{N-2}\dots a_{1}a_{0}aN−1​aN−2​…a1​a0​ שמיוצג בבסיס 3 הוא VVV.
נשרשר את שתי הספרות 212121 בצד ימין ללא שינוי שאר הספרות. מהו ערכו של המספר החדש (aN−1aN−2…a1a021)3(a_{N-1}a_{N-2}\dots a_{1}a_{0}21)_{3}(aN−1​aN−2​…a1​a0​21)3​ כתלות ב-VVV?

א. 3V+73V+73V+7
ב. 9V+79V+79V+7
ג. 3V+63V+63V+6
ד. V+7V+7V+7
ה. 9V+69V+69V+6

נפרק את המספר הזה בבסיס 3 לבסיס עשרוני כך:

(aN−1aN−2…a1a0)3=aN−1⋅3N−1+aN−2⋅3N−2+⋯+a1⋅31+a0⋅1=∑i=0N−1ai⋅3i=(V)10(a_{N-1}a_{N-2}\dots a_{1}a_{0})_{3}=a_{N-1}\cdot 3^{N-1}+a_{N-2}\cdot 3^{N-2}+\dots+a_{1}\cdot 3^1+a_{0}\cdot 1=\sum_{i=0}^{N-1} a_{i}\cdot 3^{i}=(V)_{10}(aN−1​aN−2​…a1​a0​)3​=aN−1​⋅3N−1+aN−2​⋅3N−2+⋯+a1​⋅31+a0​⋅1=i=0∑N−1​ai​⋅3i=(V)10​

כעת, נפרק את המספר החדש:

(aN−1aN−2…a1a021)3=aN−1⋅3N+1+aN−2⋅3N+⋯+a1⋅33+a0⋅32+2⋅31+1⋅1=7+∑i=0N−1ai⋅3i+2=(a_{N-1}a_{N-2}\dots a_{1}a_{0}21)_{3}=a_{N-1}\cdot 3^{N+1}+a_{N-2}\cdot3^{N}+\dots+a_{1}\cdot 3^3+a_{0}\cdot 3^2+2\cdot 3^1+1\cdot 1=7+\sum_{i=0}^{N-1}a_{i}\cdot 3^{i+2}=(aN−1​aN−2​…a1​a0​21)3​=aN−1​⋅3N+1+aN−2​⋅3N+⋯+a1​⋅33+a0​⋅32+2⋅31+1⋅1=7+i=0∑N−1​ai​⋅3i+2= 7+∑i=0N−1ai⋅3i⋅32=7+32(∑i=0N−1ai⋅3i)=↓הפיתוח הקודם7+32V=9V+77+\sum_{i=0}^{N-1}a_{i}\cdot 3^i\cdot3^2=7+3^2\left( \sum_{i=0}^{N-1}a_{i}\cdot 3^i \right) \underset{\begin{matrix} \downarrow \\ \R{\text{הפיתוח הקודם}} \end{matrix}}{=}7+3^2V=9V+7 7+i=0∑N−1​ai​⋅3i⋅32=7+32(i=0∑N−1​ai​⋅3i)↓הפיתוח הקודם​=​7+32V=9V+7

ולכן, התשובה היא (ב) - 9V+79V+79V+7.

תרגיל (3)

לפיצרייה "פיצה-קוד" יש מערכת הזמנת משלוחים מיוחדת. לכל לקוח יש משדר שממנו הוא משדר את ההזמנה ובפיצרייה יש מקלט אשר מקבל את כל ההזמנות ומפענח אותן.
לכל סוג פיצה יש קוד יחודי a0a1a2a3a4a_{0}a_{1}a_{2}a_{3}a_{4}a0​a1​a2​a3​a4​:

קודפיצה00110זיתים01001פטריות00011פפרוני11000מוצרלה10001אננס01100בולגרית\begin{array}{|c|c|} \hline \R{\text{קוד}} & \R{\text{פיצה}} \\ \hline 00110 & \R{\text{זיתים}} \\ 01001 & \R{\text{פטריות}} \\ 00011 & \R{\text{פפרוני}} \\ 11000 & \R{\text{מוצרלה}} \\ 10001 & \R{\text{אננס}} \\ 01100 & \R{\text{בולגרית}} \\ \hline \end{array}קוד001100100100011110001000101100​פיצהזיתיםפטריותפפרונימוצרלהאננסבולגרית​​

על מנת לשפר את השירות, החליטו להוסיף לכל מילת קוד את הסיביות הבאות:

c0=a0c1=a1c2=a2c3=a3c4=a4c5=a0⊕a1⊕a2⊕a3⊕a4\begin{align*} c_{0}&=a_{0} \\ c_{1}&=a_{1} \\ c_{2}&=a_{2} \\ c_{3}&=a_{3} \\ c_{4}&=a_{4} \\ c_{5}&=a_{0} \oplus a_{1} \oplus a_{2} \oplus a_{3} \oplus a_{4} \end{align*}c0​c1​c2​c3​c4​c5​​=a0​=a1​=a2​=a3​=a4​=a0​⊕a1​⊕a2​⊕a3​⊕a4​​

מהו מרחק הקוד החדש: a0a1a2a3a4c0c1c2c3c4c5a_{0}a_{1}a_{2}a_{3}a_{4}c_{0}c_{1}c_{2}c_{3}c_{4}c_{5}a0​a1​a2​a3​a4​c0​c1​c2​c3​c4​c5​?

נמצא תחילה את מרחק הקוד של הקוד המקורי a0…a4a_{0}\dots a_{4}a0​…a4​ ע"י מציאת מרחק המינג. נשים לב כי בין כל שתי מילים בקוד המרחק הוא 2 ולכן זהו מרחק הקוד.
כאשר נוסיף את c0…c4c_{0}\dots c_{4}c0​…c4​ נקבל מרחק קוד חדש של 4 שכן זה פשוט שכפול של קודים.
נכתוב את הקודים החדשים כעת:

קודפיצה00110001100זיתים01001010010פטריות00011000110פפרוני11000110000מוצרלה10001100010אננס01100011000בולגרית\begin{array}{|c|c|} \hline \R{\text{קוד}} & \R{\text{פיצה}} \\ \hline 00110001100 & \R{\text{זיתים}} \\ 01001010010 & \R{\text{פטריות}} \\ 00011000110 & \R{\text{פפרוני}} \\ 11000110000 & \R{\text{מוצרלה}} \\ 10001100010 & \R{\text{אננס}} \\ 01100011000 & \R{\text{בולגרית}} \\ \hline \end{array}קוד001100011000100101001000011000110110001100001000110001001100011000​פיצהזיתיםפטריותפפרונימוצרלהאננסבולגרית​​

נשים לב כי לכל מילה מתקיים ש-c5=0c_{5}=0c5​=0 ולכן הוא לא מוסיף למרחק הקוד. נראה זאת גם בחישוב:

c5זיתים=0⊕0⊕1⊕1⊕0=0⊕1⊕1⊕0=1⊕1⊕0=0⊕0=0c5פטריות=0⊕1⊕0⊕0⊕1=1⊕0⊕0⊕1=1⊕0⊕1=1⊕1=0c5פפרוני=0⊕0⊕0⊕1⊕1=0⊕0⊕1⊕1=0⊕1⊕1=1⊕1=0c5מוצרלה=1⊕1⊕0⊕0⊕0=0⊕0⊕0⊕0=0⊕0⊕0=0⊕0=0c5אננס=1⊕0⊕0⊕0⊕1=1⊕0⊕0⊕1=1⊕0⊕1=1⊕1=0c5בולגרית=0⊕1⊕1⊕0⊕0=1⊕1⊕0⊕0=0⊕0⊕0=0⊕0=0\begin{matrix} c_{5_{\R{\text{זיתים}}}}=0 \oplus 0 \oplus 1 \oplus 1 \oplus 0=0 \oplus 1 \oplus 1 \oplus 0= 1 \oplus 1 \oplus 0=0 \oplus 0 =0 \\ c_{5_{\R{\text{פטריות}}}}=0\oplus 1\oplus 0 \oplus 0 \oplus 1= 1 \oplus 0 \oplus 0 \oplus 1= 1 \oplus 0 \oplus 1= 1 \oplus 1=0 \\ c_{5_{\R{\text{פפרוני}}}}=0 \oplus 0 \oplus 0 \oplus 1 \oplus 1=0 \oplus 0 \oplus 1 \oplus 1=0 \oplus 1 \oplus 1=1 \oplus 1=0 \\ c_{5_{\R{\text{מוצרלה}}}}=1 \oplus 1 \oplus 0 \oplus 0 \oplus 0= 0 \oplus 0 \oplus 0 \oplus 0=0 \oplus 0 \oplus 0=0 \oplus 0=0 \\ c_{5_{\R{\text{אננס}}}}=1 \oplus 0 \oplus 0 \oplus 0 \oplus 1=1 \oplus 0 \oplus 0 \oplus 1 =1 \oplus 0 \oplus 1=1 \oplus 1=0 \\ c_{5_{\R{\text{בולגרית}}}}=0 \oplus 1 \oplus 1 \oplus 0 \oplus 0=1 \oplus 1 \oplus 0 \oplus 0=0 \oplus 0 \oplus 0=0 \oplus 0 = 0 \end{matrix}c5זיתים​​=0⊕0⊕1⊕1⊕0=0⊕1⊕1⊕0=1⊕1⊕0=0⊕0=0c5פטריות​​=0⊕1⊕0⊕0⊕1=1⊕0⊕0⊕1=1⊕0⊕1=1⊕1=0c5פפרוני​​=0⊕0⊕0⊕1⊕1=0⊕0⊕1⊕1=0⊕1⊕1=1⊕1=0c5מוצרלה​​=1⊕1⊕0⊕0⊕0=0⊕0⊕0⊕0=0⊕0⊕0=0⊕0=0c5אננס​​=1⊕0⊕0⊕0⊕1=1⊕0⊕0⊕1=1⊕0⊕1=1⊕1=0c5בולגרית​​=0⊕1⊕1⊕0⊕0=1⊕1⊕0⊕0=0⊕0⊕0=0⊕0=0​

לכן, זה לא משנה את מרחק הקוד ולכן, מרחק הקוד החדש הינו 4.

תרגיל (4)

נתונות היחידות הלוגיות KKK ו-NKNKNK:
​גליון 1 2026-05-23 02.56.41.excalidraw.svg
איזה מסטים הבאים אינו מהווה מערכת פעולות שלמה?
א. {NK,NOT}\left\{ NK,NOT \right\}{NK,NOT}
ב. {NK,1}\left\{ NK,1 \right\}{NK,1}
ג. {K,NOT}\left\{ K,NOT \right\}{K,NOT}
ד. {NK,0}\left\{ NK,0 \right\}{NK,0}
ה. {K,1}\left\{ K,1 \right\}{K,1}

תחילה נבדוק האם ניתן לייצר NOTNOTNOT מכל אחת מהמערכות:
א. ברור. ננסה ליצור OR/ANDOR/ANDOR/AND:

NK(x,y)=xy‾‾=↓דה מורגןx‾+yNK(NOT(x),y)=NK(x‾,y)=x‾⋅y‾‾=x+yNK(x,y)=\overline{x\overline{y}} \underset{\begin{matrix} \downarrow \\ \R{\text{דה מורגן}} \end{matrix}}{=}\overline{x}+y \qquad \qquad NK(NOT(x),y)=NK(\overline{x},y)=\overline{\overline{x}\cdot\overline{y}}=x+yNK(x,y)=xy​​↓דה מורגן​=​x+yNK(NOT(x),y)=NK(x,y)=x⋅y​​=x+y

לכן, זוהי מערכת פעולות שלמה.
ב:

NK(x,x)=x⋅x‾‾=x‾+x=1NK(1,x)=1⋅x‾‾=0+x=xNK(x,x)=\overline{x\cdot \overline{x}}=\overline{x}+x=1 \quad \quad NK(1,x)=\overline{1\cdot \overline{x}}=0+x=xNK(x,x)=x⋅x=x+x=1NK(1,x)=1⋅x=0+x=x NK(1,x)=x⋅0‾=1NK(1,x)=\overline{x\cdot 0}=1NK(1,x)=x⋅0=1

לא ניתן ליצור NOTNOTNOT ולכן זוהי אינה מערכת פעולות שלמה.
ג: ברור. ננסה ליצור OR/ANDOR/ANDOR/AND:

K(x,y)=xy‾K(x,NOT(y))=K(x,y‾)=xyK(x,y)=x\overline{y} \qquad \qquad K(x,NOT(y))=K(x,\overline{y})=xyK(x,y)=xy​K(x,NOT(y))=K(x,y​)=xy

לכן, זוהי מערכת פעולות שלמה.
ד:

NK(x,0)=x⋅1‾=x‾NK(x,0)=\overline{x\cdot 1}=\overline{x}NK(x,0)=x⋅1=x

כעת, ננסה ליצור OR/ANDOR/ANDOR/AND:

NK(x,y)=xy‾‾=x‾+yNK(NK(x,0),y)=NK(x‾,y‾)=x‾⋅y‾‾=x+yNK(x,y)=\overline{x\overline{y}}=\overline{x}+y \qquad \qquad NK(NK(x,0),y)=NK(\overline{x},\overline{y})=\overline{\overline{x}\cdot\overline{y}}=x+yNK(x,y)=xy​​=x+yNK(NK(x,0),y)=NK(x,y​)=x⋅y​​=x+y

לכן, זוהי מערכת פעולות שלמה.
ה:

K(x,x)=xx‾=0K(1,1)=1⋅0=0K(x,1)=x⋅0=0K(1,x)=1⋅x‾=x‾K(x,x)=x\overline{x}=0 \qquad K(1,1)=1\cdot 0=0 \qquad K(x,1)=x\cdot 0=0 \qquad K(1,x)=1\cdot \overline{x}=\overline{x}K(x,x)=xx=0K(1,1)=1⋅0=0K(x,1)=x⋅0=0K(1,x)=1⋅x=x

נשים לב כי יצרנו NOTNOTNOT. כעת, בואו נמשיך לבדוק האם אנחנו יכולים ליצור AND/ORAND/ORAND/OR:

K(x,y)=xy‾K(x,K(1,y))=K(x,y‾)=xy‾‾=xy\begin{matrix} K(x,y)=x\overline{y} \quad & \quad K(x,K(1,y))=K(x,\overline{y})=x\overline{\overline{y}}=xy \end{matrix}K(x,y)=xy​​K(x,K(1,y))=K(x,y​)=xy​​=xy​

לכן, זוהי מערכת פעולות שלמה.

לכן, התשובה הנכונה היא ב.