21-09-2006, 01:32
|
|
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
|
|
חבר מתאריך: 07.10.04
הודעות: 13,777
|
|
מקור הבעייה בתכנות
בתגובה להודעה מספר 1 שנכתבה על ידי linuxsboot שמתחילה ב "באג מוזר/בעיה מוזרה בוינדוס עם המונים של החיבור לרשת ובחיבור usb/כרטיסי הרשת"
אז אני אסביר בקצרה.
מחשבים לא יודעים לספור מ"0" עד "9", אלא רק מ-"0" עד "1" (למה? זה כבר סיפור אחר)
כל סיפרה נקראת "ביט" (סיפרה אחת ויחידה שמציינת "יש" או "אין", כמו מנורה, לצורך העניין)
בוא נספור את כמו האפשרויות שיש לנו לפי כמו הביטים שאנחנו משתמשים בהם:
אם נשתמש בביט אחד, האפשרויות הן 0 או 1 - 2 אפשרויות
2 ביטים - 4 אפשרויות (00, 01, 10, 11)
3 ביטים - 8 אפשרויות (000, 001, 010, 011, 100, 101, 110, 111)
וכן הלאה..
יש חוקיות לעניין: ל-N ביטים - יש 2 בחזקת N אפשרויות הצגה.
כאשר הטכנולוגיה התקדמה והייתה אפשרות להעביר יותר מספרים בתווך, החליטו לאגד 8 ביטים ביחד ליחידת גודל חדשה - בית (שוב, למה? - זה כבר סיפור אחר ).
הבית, בגלל שמחזיק 8 ביטים, יכול לציין כל מספר בין 1 ל 2 בחזקת 8 (256)
אחרי הבית הופיעה המילה (2 בתים, 16 ביטים, 65535 אפשרויות), המילה הכפולה (2 מילים, 32 ביטים, 4.3 מליארד אפשרויות בערך, קצת פחות) המילה המרובעת (2 מילים כפולות, 64 ביטים) ו... זהו, לבינתים (לדעתי)
עכשיו, למה אני מציק לך על העניין הזה במשך כל-כך הרבה זמן?
כל יחידת גודל מספרי מיוצגת במחשבים ביחידת גודל מסויימת, המספרים הספציפים ששאלת עליהם מיוצגים ביחידה שקוראים לה unsigned integer (מספר שלם לא מסומן, אני לא אכנס לזה), היחידה הזו במשפחת חלונות NT היא יחידה בגודל מילה כפולה, ולכן המגבלה שלה היא בערך 4.3 מיליארד, ולכן המספר התאפס אצלך.
זהו.
הסבר ארוך מידי, לא?
_____________________________________
|