VB6 משמעות ה OR

../images/Emo41.gif VB6 משמעות ה OR

מה משמעות ה OR ב VB6 ? האם זה ביצוע OR בין ביטים, או OR לוגי ? נתקלתי למשל ב :
Long x = 8192 Or 32​
מה משמעות הביטוי ?
 

נוייברט

New member
Or המקורי הוא

אחד מהארבע שערים לוגים המפורסמים Or הוא השער הלוגי שמבצע חיבור פשוט כיון שהוא בודק האם באחת הסיביות בשתי משתנים שמנסים לחבר יש ערך חיובי ומוסיף את זה לתוצאה. VB הכניסה את ה Or בתור אחת ממילות המפתח שלה אבל.... היא כמובן לא יכלה להתעלם מהשימוש הפשוט שלו ד"א יש גם שימושים כאלו לא רק עם Or תנסי לעשות כך A = C And B וזה גם יגרום לפעולה מסוימת שחכתי איזה וכנ"ל גם Not ו Xor
 
תגובה

קודם כל, לא נעים לומר, אבל חלק מהתגובות שעלו פה הן לא נכונות ומטעות. לעניין עצמו: ברוב שפות התכנות יש 2 פעולות שקשורות לשער הלוגי OR: 1. יישום של השער הלוגי OR בין תנאים או ביטויים שיש להם ערך בולאני (דהיינו, True או False). התוצאה היא ערך בולאני. 2. יישום של השער הלוגי OR על כל ביט בייצוג הבינארי של שני מספרים (שלמים, מאותו טיפוס) בזכרון של המחשב. התוצאה היא מספר (נוסף). פעולה זו נקראת בד"כ bitwise or. זו אינה פעולה של חיבור פשוט בין מספרים. במקרים מסויימים (כמו בדוגמה שלך), התוצאה זהה לסכום המספרים, אבל זה לא ככה תמיד (ממש לא). דוגמה ל 1:
If (MyVarX = 123) Or (MyVarY = 456) Then ... End If​
דוגמה ל 2:
Dim MyLong1 As Long Dim MyLong2 As Long Dim MyLong3 As Long MyLong1 = 5 'which is "101" MyLong2 = 9 'which is "1001" MyLong3 = MyLong1 Or MyLong2 'result is "1101", which is 13, and not 14 MsgBox MyLong3​
 

נוייברט

New member
אתה יודע איך המחשב עובד?

אם הוא לוקח את כל הסיביות ממשתנה אחד וממשתנה שני ואם יש באחד מהם ערך חיובי הוא מראה אותו במשתנה השלישי זה פעולת חיבור, וזה בכלל לא נושא לוויכוח זה ה א' ב' של עבודה עם סיביות ככה מחברים סיביות אם אני יראה שתחזיר לי משהו לא לענין אני לא יענה כי אין לי ענין סתם לשרשר פה ולכן אם אני לא יענה אל תראה את זה בתור הודאה,אבל כל ספר הכי פשוט של שפת סף תחיל ביסודות האלו
 
המממם.. נעשה קצת חם, לא?!

ראשית, אני לא אוהב את הטון של הדברים שכתבת. אני משתדל להיות מנומס בפורום, גם אם אני מתנגד לדעתו של מישהו אחר. שנית, לפעמים אנשים טועים או מטעים. זה יכול להיות כתוצאה של אי-ידיעה או אי-הבנה, ואין ברירה, כולנו בני אדם ויכולים לטעות. שלישית ולעניין עצמו - אני לא יודע אם ראית את הדוגמאות שנתתי. הדוגמה השניה מדגימה איך פעולת bitwise or ב VB6 אינה פעולת חיבור, כי היא לא מיישמת שום carry (אם ניכנס באמת לשערים לוגיים ול half adder או full adder). אם רק היית מנסה את הדוגמה הנ"ל היית רואה בעצמך את התוצאות, ורואה שהתוצאה של פעולת Or על 5 ו 9 (לדוגמה) אינה 14, אלא 13. כלומר, אין כאן חיבור רגיל, כפי שאתה טוען. אתה מוזמן לבדוק גם מה התוצאה של פעולת Or על מספרים נוספים. נניח על 5 ו 5 (שאמור להיות 10 לפי הטענה שלך). להבא אני מבקש ממך שני דברים: 1. לבדוק את עצמך, ולברר את הידע שלך לפני שאתה כותב את הדברים בפורום. מי יודע, אולי במקרה הידע שלך לא מדויק. 2. לכתוב הודעות פחות חריפות ועם פחות התקפה אישית. אין שום בעיה עם דעה מנוגדת או שונה, אבל חשוב שהיא תיכתב בצורה עניינית ומנומסת. הפורום הוא בדיוק המקום להציג דעות מגוונות, אבל חשוב שכללי נימוס בסיסיים ישמרו גם כאן.
 

נוייברט

New member
כמה דברים

1. כמה שקשה לעשות את זה וזה מאד קשה אני מבקש סליחה בלי קשר למי שצודק 2. אני כתבתי שאני לא יגיב אם זה יהיה משהו שטותי כדי שאם יתברר לי שזה שמדבר איתי סתם הדיוט אני לא יצטרך לשרשר כדי להוכיח לצד השלישי(קואליציה)שאני צודק 3. התברר לי שזה לא סתם הדיוט 4. לגבי החיבור אני מודע לבעיה שבזמן שתנסה לחבר שתי סיביות מקבילות כמו 5 + 5 ששתי המיקומים שלהם אותו דבר(הסיביות 1 ו - 4)זה לא יחבר כיון שאין למה להוסיף ולכן באמת צריך את הנזקף(Carry)אבל כאן באתי לענות לה תשובה פשוטה שלא תסבך את העינינים וגם שהעינינים אצלי לא כל כך ברורים כי לא למדתי שפת סף מקצועי אלא רק עברתי על כמה ספרים. 5. שוב אני תקפתי רק בגלל שכבר נמאס לי מכל ה"ידענים" בפורומים ואני מתנצל אם זה פגע בך
 
תודה רבה על ההסבר, אבל :

תודה על ההסבר המפורט ! בדוגמא שנתת התוצאה היא 1110 (ולא 1101), ולכן היא נכונה (14).
 
לא נכון...

1. תריץ את הדוגמה. יוצא 13, ולא 14 2. פעולת ה bitwise or מתבצעת "מימין לשמאל". כלומר, אם עושים את הפעולה על הנייר, צריך ליישר את שני הייצוגים הבינאריים לימין ואז להתחיל.
 

נוייברט

New member
סתכל כתבתי לך כמה דברים

אבל זה למעלה יותר כי הגבתי את זה על הודעה קודמת שלך
 
למעלה