שאלה ב C... - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה ב C...


b007

Recommended Posts

שלום...

אני צריך לכתוב פונקציה כזאת..:

אני מקבל ממנה CHAR אני צריך להדפיס את הערך הבינארי שלו..

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

איך עושים זאת?

קישור לתוכן
שתף באתרים אחרים

כדי להזיז את הביטים אתה עושה SHIFT.

אם אתה רוצה לבדוק אם הביט במקום ה- I דלוק או לא, אתה צריך להזיז I מקומות, לעשות & עם 1, ולבדוק אם שווה ל- 0 או שונה.

או לבדוק אם המספר שיצא לך הוא זוגי או איזוגי(ע"י %).

קישור לתוכן
שתף באתרים אחרים

כדי להזיז את הביטים אתה עושה SHIFT.

אם אתה רוצה לבדוק אם הביט במקום ה- I דלוק או לא, אתה צריך להזיז I מקומות, לעשות & עם 1, ולבדוק אם שווה ל- 0 או שונה.

או לבדוק אם המספר שיצא לך הוא זוגי או איזוגי(ע"י %).

מדוע צריך להזיז קודם?

AND עם ערך אשר המיקום ה-i שלו דלוק יתן את אותה תוצאה. אפס לא דלוק, כל דבר אחר דלוק.

קישור לתוכן
שתף באתרים אחרים

זה אומר בדיוק מה שרשמו למעלה.

1<<i

מזיז את המספר 1 i ביטים שמאלה (שזה זהה ללכפול אותו ב-2 i פעמים).

כלומר, 1>>1 זה 2, 1>>2 זה 4, 1>>3 זה 8, וכן הלאה.

מה שאתה מקבל הוא מספר שבו הביט במקום ה-i דולק, וכל השאר כבויים.

אח"כ עושים למספר הזה AND לוגי עם c, כלומר עוברים על שני המספרים ביט ביט ומדליקים את הביטים שדלוקים בשניהם.

בתכלס, כיוון שבמספר רק הביט ה-i דולק, זה אומר שהמספר החדש בדיוק יכיל את הביט ה-i של המספר c.

ואז אנחנו בודקים אם הוא 0 או לא.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...