טלמון סילבר
New member
רוצים חידה?
היה פעם מחשב כזה: תא הזיכרון הכיל בדיוק 37 סיביות: הראשונה משמאל נחשבה לסימן המספר, השאר ספרות בינאריות פוזיציוניות. את תוכנו של תא כתבו (והקלידו) בספָרות אוקטליות. למשל: 19 עשרוני = = 011 010 000 000 000 000 000 000 000 000 000 000 0 בינארי = = 0023 0000 0000+ אוקטלי 19- עשרוני = = 011 010 000 000 000 000 000 000 000 000 000 000 1 בינארי = = 0023 0000 0000- אוקטלי היו 4 פעולות החשבון על מספרים בינאריים בלבד, שנחשבו קטנים (בערך המוחלט מ-1. במילים אחרות: הדוגמאות שלמעלה אינן מדוייקות; לאמיתו של דבר היצגתי את המספרים 19 ומינוס 19 מוכפלים ב-2 בחזקת מינוס 36. להלן דוגמאות מדוייקות: 0.75 עשרוני = = 000 000 000 000 000 000 000 000 000 000 000 110 0 בינארי = = 0000 0000 6000+ אוקטלי 0.125- עשרוני (מינוס שמינית) = = 000 000 000 000 000 000 000 000 000 000 000 100 1 בינארי = = 0000 0000 1000- אוקטלי בעצם ההבדל ניכר רק בפעולת הכפל (מפעולת החילוק במחשב הזה נתעלם כליל), ואילו לגבי חיבור וחיסור, ההבדל בין הבנת המספרים כשלמים או כשלמים כפול 2 בחזקת מינוס 36, אינו משנה דבר. ממילא החיבור-חיסור פוזיציוני. שימו לב שמספרים שליליים אינם מוצגים כמו במחשבים של היום. נוסף לפעולות החשבון (חיבור, חיסור, כפל) ישנן הפעולות הלוגיות - and, or, xor. וכמו כן הזזה ימינה או שמאלה. יש הזזה חשבונית, בה מזיזים רק 36 ביטים חוץ מהביט של הסימן, הנשאר ללא שינוי. הביטים היוצאים מהתא עפים, ובמקומם נכנסים ביטים 0. וישנה הזזה לוגית ימינה או שמאלה, בה משתתפות כל 37 הסיביות. קצת סבלנות, מתקרבים לחידה. שני תאי זיכרון מכילים מספרים עשרוניים-בינאריים שלמים לא-שליליים. במספרים עשרוניים-בינאריים כל ספרה עשרונית מיוצגת בינארית ב-4 סיביות. סה"כ 9 ספרות, כאשר ביט הסימן משמש גם כאן כביט הסימן. למשל המספר העשרוני 135 מיוצג בעשרונית-בינארית כך: 0101 0011 0001 0000 0000 0000 0000 0000 0000 0 הצרה היא שאין במעבד של המחשב הזה פעולות חשבוניות עשרוניות-בינאריות. ישנן רק הפעולות שמניתי לעיל, כולל פעולות חשבון בינאריות טהורות בלבד. עכשיו החידה: צריך לחבר עשרונית-בינארית שני מספרים עשרוניים-בינאריים הנמצאים בתאי הזיכרון A ו-B. ליתר דיוק: צריך למצוא אלגוריתם מהיר המבצע זאת. לולאה העוברת על כל ספרה וספרה תהיה איטית מדי. צריך משהו שתופס במכה אחת את כל הספרות העשרוניות-בינאריות. הערה: יש 4 צורות לכל פעולה במחשב הזה, ואדגים אותן על פקודת החיבור הבינארית:
היה פעם מחשב כזה: תא הזיכרון הכיל בדיוק 37 סיביות: הראשונה משמאל נחשבה לסימן המספר, השאר ספרות בינאריות פוזיציוניות. את תוכנו של תא כתבו (והקלידו) בספָרות אוקטליות. למשל: 19 עשרוני = = 011 010 000 000 000 000 000 000 000 000 000 000 0 בינארי = = 0023 0000 0000+ אוקטלי 19- עשרוני = = 011 010 000 000 000 000 000 000 000 000 000 000 1 בינארי = = 0023 0000 0000- אוקטלי היו 4 פעולות החשבון על מספרים בינאריים בלבד, שנחשבו קטנים (בערך המוחלט מ-1. במילים אחרות: הדוגמאות שלמעלה אינן מדוייקות; לאמיתו של דבר היצגתי את המספרים 19 ומינוס 19 מוכפלים ב-2 בחזקת מינוס 36. להלן דוגמאות מדוייקות: 0.75 עשרוני = = 000 000 000 000 000 000 000 000 000 000 000 110 0 בינארי = = 0000 0000 6000+ אוקטלי 0.125- עשרוני (מינוס שמינית) = = 000 000 000 000 000 000 000 000 000 000 000 100 1 בינארי = = 0000 0000 1000- אוקטלי בעצם ההבדל ניכר רק בפעולת הכפל (מפעולת החילוק במחשב הזה נתעלם כליל), ואילו לגבי חיבור וחיסור, ההבדל בין הבנת המספרים כשלמים או כשלמים כפול 2 בחזקת מינוס 36, אינו משנה דבר. ממילא החיבור-חיסור פוזיציוני. שימו לב שמספרים שליליים אינם מוצגים כמו במחשבים של היום. נוסף לפעולות החשבון (חיבור, חיסור, כפל) ישנן הפעולות הלוגיות - and, or, xor. וכמו כן הזזה ימינה או שמאלה. יש הזזה חשבונית, בה מזיזים רק 36 ביטים חוץ מהביט של הסימן, הנשאר ללא שינוי. הביטים היוצאים מהתא עפים, ובמקומם נכנסים ביטים 0. וישנה הזזה לוגית ימינה או שמאלה, בה משתתפות כל 37 הסיביות. קצת סבלנות, מתקרבים לחידה. שני תאי זיכרון מכילים מספרים עשרוניים-בינאריים שלמים לא-שליליים. במספרים עשרוניים-בינאריים כל ספרה עשרונית מיוצגת בינארית ב-4 סיביות. סה"כ 9 ספרות, כאשר ביט הסימן משמש גם כאן כביט הסימן. למשל המספר העשרוני 135 מיוצג בעשרונית-בינארית כך: 0101 0011 0001 0000 0000 0000 0000 0000 0000 0 הצרה היא שאין במעבד של המחשב הזה פעולות חשבוניות עשרוניות-בינאריות. ישנן רק הפעולות שמניתי לעיל, כולל פעולות חשבון בינאריות טהורות בלבד. עכשיו החידה: צריך לחבר עשרונית-בינארית שני מספרים עשרוניים-בינאריים הנמצאים בתאי הזיכרון A ו-B. ליתר דיוק: צריך למצוא אלגוריתם מהיר המבצע זאת. לולאה העוברת על כל ספרה וספרה תהיה איטית מדי. צריך משהו שתופס במכה אחת את כל הספרות העשרוניות-בינאריות. הערה: יש 4 צורות לכל פעולה במחשב הזה, ואדגים אותן על פקודת החיבור הבינארית:
add B+A => B, summator add B+A => summator add summator+A => B, summator add summator+A => summator
כאשר הצורה הרביעית מהירה ב-25% מהצורה השניה או השלישית, והצורה הראשונה איטית מהן ב-25%. פעולות הזזה קצת יותר איטיות מהפעולות החשבוניות והלוגיות (ומהירותן של כל אלו שווה), ופעולת הכפל איטית בערך פי 3.