עבור לתוכן

הכנסת מספרים למערך ע"י ביטים

Featured Replies

פורסם

שלום לכולם, אני אמור לבנות תוכנית אינטראקטיבית למשתמש.

הוא אמור רשום

read_set A,45,23,7,6

וכדומה.... ואני אמור להכניס את המספרים לתוך מערך ע"י ייצוג של ביטים כלומר... (המשתמש יכול להכניס רק את המספרים 0-127)

כלומר לעשות מערך של char בגודל 16 (0-15) ואם הוא מזין את המספר 12 לדוגמא

אז אני אמור ללכת לתא 12 (שמיקום שלו הוא 2 במערך)

והלדליק את הביט....

אני יודע את כל הפקודות של הביטים:

>>

<<

|

וכל אלה... אני פשוט לא מבין איך הפקודות עובודת... אם מישהו יכול לתת לי דוגמא איך עובדים עם זה אני יצליח להבין ולעשות את העבודה!

כל טיפ או עזרה עיזור מלא!

תודה לכולם

פורסם
  • מחבר

שכחתי לציין שהעבודה היא ב C

אם מישהו יכול לתת לי דוגמא לקוד זה ממש יעזור!

שוב תודה

פורסם
  • מחבר

תודה רבה על התגובה המהירה...

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

איך אני מפעיל את אותם סימנים << , >> , | , &

בקוד...

פורסם
  • מחבר

נאמר שאם קיבלתי את המספר 12 (n) ואני רוצה להדליק את ביט מספר 12 במערך A - שהוא בעצם ממוקם בתא 2

מה עלי לרשום?

תודה רבה.

פורסם

נתחיל מזה שמתחילים לספור מ-0 ולא מ-1, ככה שביט מספר 12 יושב בתא 1, לא 2.

חוץ מזה, באמת שכל מה שאתה שואל כבר כתוב בת'רד האחר...

פורסם
  • מחבר

אבל בתא הראשון של המערך יש 0-7 לא? הרי char זה 8 ביטים..

פורסם
  • מחבר

ולא הבנתי איך כותבים, אם תוכל לכתוב לי רק את השורת קוד כדי שאני יבין איך זה מתנהל רק הדלקה זה יהיה מצויין.

תודה שוב

פורסם

הימנע בבקשה מפרסום שתי תגובות ברצף. אם יש לך משהו להוסיף להודעה, השתמש בכפתור העריכה.

אבל בתא הראשון של המערך יש 0-7 לא? הרי char זה 8 ביטים..

נכון, אבל התא הראשון הוא תא מספר 0, כי מתחילים לספור מ-0. אז התא ה"שני" הוא תא מספר 1.

ולא הבנתי איך כותבים, אם תוכל לכתוב לי רק את השורת קוד כדי שאני יבין איך זה מתנהל רק הדלקה זה יהיה מצויין.

אז תקרא את הת'רד שקישרתי אליו. כבר עניתי על כל השאלות האלה שם.

פורסם
  • מחבר

היי שניצל..

קראתי מספר פעמים את התרד שהראת לי. הוא באמת עזר ונתן לי את התמונה הכללית...

אני לא מתעצל לקרוא ואם אני שואל כנראה שלא הבנתי...

אם המשתמש הזין את הספרה 2, אז אני נגש לתא הראשון ומציב 00100000 ?

int A[1]=00100000 ?

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

אבל אני לא מבין איך זה עובד! איך מדליקים ומכבים? מה הפקודה? הבנתי את הסימנים אבל איך זה מתבצע בתוכנית עצמה.

אני מקווה שיש לך זמן וכוח להסביר לי כי אני לא מצליח להבין כמו שצריך בת'רד ששלחת.

פורסם
  • מחבר

בהחלט קראתי וגם הבנתי...

אני פשוט לא מצליח להבין מהן שורת הפקודות שעלי לבצע מקבלת המספר עד להדלקת הביט... מעשית.. איך אני נגש לביט

כלומר קיבלתי את מספר 2 איך אני כותב את זה שאני רוצה ללכת לביט מספר 3 (כולמר 2) הופך אותו ל1 במערך שנקרא A.

שוב אני אציין שאני יודע את הכל תאורתית מעשית לא מצליח לחשוב על איך לבצע את זה.

אני פשוט צריך משהו לדוגמא ואז אני אבין איך זה עובד וכך לכתוב בעצמי... כי כרגע לא ממש מבין איך מבצעים את זה מעשית.

שוב, אני לא מתעצל, אם הייתי יודע הייתי כותב במקום לשאול שאלות בפורום.

מקווה שאתה מבין, תודה.

פורסם

כמו שרשמתי שם, אתה לא יכול לגשת "ישירות" לביט.

אתה יכול לעשות לדוגמה z = x | y שזה שקול ל"הדלק ב-x את כל המקומות התואמים למקומות שדלוקים ב-y, ושים את התוצאה ב-z". ככה שאם ב-y דולקים הביטים במקומות 1 ו-6 אז אחרי הפעולה הזו z יהיה שווה ל-x, פרט לביטים במקומות 1 ו-6 שיהיו דולקים (בין אם הם היו דולקים ב-x או לא).

באותו אופן אתה יכול לעשות z = x & y שזה שקול ל"כבה ב-x את כל המקומות התואמים למקומות שכבויים ב-y ושים את התוצאה ב-z", ככה שאם ב-y הביטים במקומות 2 ו-4 כבויים אז אחרי הפעולה הזו z יהיה שווה ל-x, פרט לביטים במקומות 2 ו-4 שיהיו כבויים (בין אם הם היו דלוקים או לא ב-x).

באמצעות פעולות הזזה אתה יכול ליצור את y ככה שיכיל רק אפסים, פרט לביט אחד שדולק. תחשוב איך אתה משלב את שני הדברים האלה כדי להדליק ביט אחד בודד ב-x.

פורסם
  • מחבר

אני חושב שהבנתי, אני אנסה למממש את זה.

תודה על הסבלנות! :xyxthumbs:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים