ברוב המחשבים, הכתובת היא: c:\windows\microsoft.net\framework\v1.1.4322 אגב, רצוי שתלמד לשרשר... אם הגבת להודעה שלי, אז תלחץ "תגובה להודעה" בהודעה שלי, ולא בהודעה הראשית, כדי שההודעה שלך תופיע מתחת להודעה שלי.
ללא חתום ? אני עכשיו לומד מהמדריך שבאתר corner והגעתי לחלק של משתנים בסיסיים בפועל אני יודע קצת מג'אווה מה כל משתנה אוסף בעצמו. אבל מה זה משתנה עם ה-u בהתחלה? מה זה אומר? למשל: uInt ו- int אני יודע ש-int אחראי על אכסון מספרים שלמים בעל מרחב של 32 בתים אבל מהו ה-uInt (מה ההבדל בין חתום ללא חתום?) בתודה ניר
u מציין unsigned (בלתי מסומן). int32 הוא בין 2,147,483,648- ל-2,147,483,648 (מסומן, כלומר עם סימן המציין האם המספר חיובי או שלילי), ו-uint32 הוא בין 0 ל-4,294,967,295 (בלתי מסומן, כלומר חיובי בלבד, ללא סימן המציין האם המספר חיובי או שלילי).
using System; namespace BitsOperators{ class BitManipulation{ static void Main(string[] args){ int num=1; int res= num | 3; \\\ למה ה-3 נבחר? Console.WriteLine("res = {0}", res); num = 1; res = num & 3; \\\ למה זה נשאר 3 ? Console.WriteLine("res = {0}", res); res = num ^ 15; \\\ למה זה יצא 14
Console.WriteLine("res = {0}", res); uint num1 = 1; uint res1 = ~num1; \\\ למה זה יוצא מספר כזה ארוך?!!! Console.WriteLine("res1 = {0}", res1); num = 1; res = num << 5; \\\ איך מגיעים מזה ל-32? Console.WriteLine("res = {0}", res); num = 32; res = num >>4; \\\ ואיך מגיעים מהמספר הזה ל-2? Console.WriteLine("res = {0}", res); } } }
בשביל להבין את הנושא אתה צריך ללמוד קצת על איך המחשב מייצג מספרים באמצעות סיביות (ביטים). לדוגמא, טיפוס הנתונים Int64 מיוצג ע"י 64 סיביות. אם נרצה לייצג את המספר 4 באמצעותו, נדליק את הסיבית השלישית ונכבה את כל היתר. כל אופרטור מבצע פעולה בינארית אחרת על הסיביות הללו. תנסה להבין את הקישור המצורף, ואם יהיו לך שאלות נוספות אתה מוזמן לחזור ולשאול.
אתה יכול בבקשה להסביר לי את החיבור והכפל הבנתי מצוין אבל איך הולך חיסור (לא מוסבר שם) אז פעולת AND BITWISE איזה מן פעולה בינארית זה מייצג כפל או חיבור? וגם לא הבנתי את bitwise left shift ו-right shift איך הם עובדים ? (<<,>>) בתודה ניר
הדרך הכי פשוטה להבין פעולות בינאריות היא בעזרת טבלת אמת. זאת טבלה שמכילה את כל הצירופים האפשריים ותוצאותיהם. עבור AND:
0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1
כלומר ה-AND דומה במידת מה לכפל, מלבד העובדה שכאשר אתה מבצע AND בין מספרים גדולים יותר (אוסף של סיביות), אין CARRY כמו בכפל אלא הפעולה מתבצעת על כל זוג סיביות בנפרד. באופן מקביל, טבלת האמת של OR היא כדלקמן:
0 OR 0 = 0 0 OR 1 = 1 1 OR 0 = 1 1 OR 1 = 1
OR דומה במידת מה לחיבור, אבל שוב גם כאן אין CARRY. באשר לאופרטור shift left - >>, הוא מסיט את כל הסיביות במספר שמאלה, כאשר הסיבית השמאלית ביותר נעלמת ואילו במקום הסיבית הימנית ביותר תוכנס הסיבית 0. לדוגמא, אם ניקח את המספר העשרוני 5, שהוא בבינארי: 0101B, ונבצע לו הזזה של ביט אחד ימינה, נקבל את המספר 10: 1010B. מקווה שעזרתי.
תקראו שנייה את מה שאני כותב אני רוצה שתגידו לי אם הבנתי נכון את הפולימורפיזם
תודה ניר
נגיד ויש משחק של מלחמות יש קבוצות מוסיימות של חיילים כל אחד מהם יש לו נשק שונה. המחלקות של ה"אורקים" (סוג של קבוצת חיילים), "הרוחות"(עוד קבוצת חיילים), ושל "האבירים" יורשות ממחלקה בשם soldiers את הפרטים (שם קבוצה, שם שחקן...) ושיטות (סוג התקיפה) אבל מכיוון שלכל קבוצה יש נשק שונה אני אגדיר את השיטה במחלקות היורשות ובמחלקת הבסיס... רק שבמחלקות היורשות אני אשנה בהתאם את השיטה כדי שקבוצה מסוימת תהיה לה נשק אחיד. השיטה במחלקת הבסיס תהיה אבסטרקטית כי אני לא רוצה להגיע למצב שלחייל אין נשק האם זה נכון מה שכתבתי כאן ? בתודה ניר