ABA


"|Assembly| איך אפשר לקבל מידע על ביטים מבלי לספור אותם?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10160 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10160
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   13:24   30.11.10   
אל הפורום  
  |Assembly| איך אפשר לקבל מידע על ביטים מבלי לספור אותם?  
 
אז ככה, כל קוסמי ה-XOR-ים, AND-ים ו- OR-ים למיניהם, האם יש לכם טריק בשרוול בשבילי?
אני צריך לבדוק אם מספר הביטים הדלוקים ב-INTEGER שנקלט הוא זוגי.
אני כמובן יכול ליצור לולאה של 32 איטרציות, כאשר בכל איטרציה אני עושה שיפט ובודק את ה-CF.
אבל זה משעמם, טרחני ומגעיל.
אז אם יש שיטה יותר טובה לעשות את זה, אשמח לשמוע.
(בינתיים מה שיש לי, זה לפצל את המספר ל-2, ולעשות XOR של 2 החצאים, ואז שום לעשות את זה על שני הרבעים של החצי המקוסר... ורק אז לספור..)


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אני זוכר שיש איזה דגל VeNom  30.11.10 14:49 1
  למחוק hm10 01.12.10 02:16 2
  מכתב DOWNTOWN 01.12.10 15:18 3
  עוד דרך.. Yariv-H 03.12.10 13:27 4
     עשיתי בסוף משהו דומה... Zippo  05.12.10 01:11 6
         אחלה מעולה , רק שתדע.. Yariv-H 05.12.10 09:38 8
             אחלה. טוב לדעת... Zippo  05.12.10 16:03 9
  מכתב Deuce  04.12.10 14:10 5
     אני אחשוב על זה. Zippo  05.12.10 01:12 7
         הבנתי. Zippo  06.12.10 21:07 10

       
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   14:49   30.11.10   
אל הפורום  
  1. אני זוכר שיש איזה דגל  
בתגובה להודעה מספר 0
 
   שכאשר מבצעים פעולה אריתמטית אומר האם מספר הביטים הדלוקים ברגיסטר זוגי..
אני לא הכי זוכר איך ומה..אבל אפשר לעשות מאין רדוקציה ולבצע חיבור ב 0 או משהו ולבדוק את הדגל..באמת שאני לא כ"כ זוכר הרבה מאסמבלר אז קח את זה בערבון מוגבל..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hm10
חבר מתאריך 24.9.09
322 הודעות
   02:16   01.12.10   
אל הפורום  
  2. למחוק  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DOWNTOWN
חבר מתאריך 28.5.02
5388 הודעות
   15:18   01.12.10   
אל הפורום  
  3. מכתב  
בתגובה להודעה מספר 0
 
   http://graphics.stanford.edu/~seander/bithacks.html#ParityNaive

s22holyshits33


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   13:27   03.12.10   
אל הפורום  
  4. עוד דרך..  
בתגובה להודעה מספר 0
 
   ישנה דרך יעילה אבל לא כזה טרוויאלית ליישום.

לעשות ביט וויז בין כול 2 ביטים
זאת אומרת:

נניח ויש לך 32 ביטים , אתה עושה בין כול 2 ביטים צמודים XOR

ואז יש לך 16 ביטים , עושה שוב.

8 ביטים , שוב

4 ביטים , שוב

2 ביטים , שוב

תוצאה

מה שאומר שב 5 סטים של בדיקות אתה מסיים את הסיפור הזה.

ואני יודע שזה קיים , אבל לא זוכר איך מייסמים שאחרי 2 בדיקות ניתן להסיק האם זה זוגי או לא..

חפש על פארטי ביט וביט וואיז



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   01:11   05.12.10   
אל הפורום  
  6. עשיתי בסוף משהו דומה...  
בתגובה להודעה מספר 4
 
קיסרתי את ה-MSB עם ה-LSB.
כלומר, על 2 עותקים, פעם ראשונה שיפט של 16 ביטים ימינה על עותק אחד,
ו- andl $0xFFFF, על העותק השני.
אחרי 5 פעולות כאלה כאשר כל פעם מקצצים בחצי, מגיעים לביט יחיד.
אם הוא דלוק, המספר היה אי-זוגי.
אם לא, כלומר כל שני ביטים קיסרו אחד את השני, ולכן המספר היה זוגי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   09:38   05.12.10   
אל הפורום  
  8. אחלה מעולה , רק שתדע..  
בתגובה להודעה מספר 6
 
   עכשיו בקורס של מיקרו בקרים , אמרו לנו שעדיף כמה שפחות להשתמש בפקודות של
Shifting
הם צורכות הרבה יותר קלוקים מהמערכת מאשר פעולות XOR לביטים ספציפים.

עדיף לך להכין רגיסטרים עם מסכות סה"כ 5 שע"י XOR עם המידע שלך ברגיסטר תוכל לקבל את המסכה שלהם.

עדיף לעשות פעמיים XOR מאשר Shifing מבחינת הקלוקים .



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   16:03   05.12.10   
אל הפורום  
  9. אחלה. טוב לדעת...  
בתגובה להודעה מספר 8
 
בכל אופן לתרגיל הנוכחי זה לא כ"כ משנה, ויותר חשוב שהלוגיקה תהיה ברורה, מאשר יעילות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   14:10   04.12.10   
אל הפורום  
  5. מכתב  
בתגובה להודעה מספר 0
 
תחשוב על הפעולה הבאה:
a & (a-1)






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   01:12   05.12.10   
אל הפורום  
  7. אני אחשוב על זה.  
בתגובה להודעה מספר 5
 
אבל אף אחד לא מבטיח לי מספר חיובי.
מה קורה אם a = MIN_INT?
עדיין יעבוד...?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות
   21:07   06.12.10   
אל הפורום  
  10. הבנתי.  
בתגובה להודעה מספר 7
 
אבל אני עדיין אצטרך לולאה, שבמקרה הגרוע תרוץ 32 פעמים...
פשוט בכל פעם אני יקבל מספר שהביט הדלוק הכי LSB התאפס.
אספור את מספר הפעמים שהלולאה רצה, ואבדוק אם המספר שקיבלתי זוגי או לא...

(אם הכוונה הייתה שונה, אשמח לתיקון...)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net