16-04-2011, 19:16
|
|
|
|
חבר מתאריך: 04.11.04
הודעות: 6,986
|
|
shift של מספר גדול של ביטים.
יש לי מערך מסוג כלשהו, ואני רוצה לבצע shift למערך ככה שאם איבר נמצא במקום ה-i, אחרי ה-shift הוא יהיה במקום ה-i-1.
העניין הוא שאני צריך שזה יקרה מהר ולכן לעבור על כל המערך זה לא אפשרי.
הפיתרון שחשבתי הוא פשוט לעשות shift אחד ימינה לביטים כאשר מס' הביטים הוא כגודל האיבר. השאלה איך אפשר לבצע את זה? האם יש בכלל bitwise operators שפועלים על מערכים? אני מחפש פונ' שתקבל שתי כתובות בזיכרון, ותבצע שיפט לכל הביטים שביניהם, מישהו מכיר משהו כזה או יודע איך אפשר לממש את זה?
בהתחלה חשבתי להשתמש ב-memmove וזה עובד טוב, הבעיה שאי אפשר להשתמש בספריה string.h.
ולמקרה שזה לא היה ברור, השפה היא שפת C.
|