פורסם 2006 במאי 1319 שנים שלום...אני צריך לכתוב פונקציה כזאת..:אני מקבל ממנה CHAR אני צריך להדפיס את הערך הבינארי שלו.. ובנוסף אני צריך לשחק עם הביטים למשל להזיז את הביט הראשון למקום 3 וכו'...איך עושים זאת?
פורסם 2006 במאי 1319 שנים כדי להזיז את הביטים אתה עושה SHIFT.אם אתה רוצה לבדוק אם הביט במקום ה- I דלוק או לא, אתה צריך להזיז I מקומות, לעשות & עם 1, ולבדוק אם שווה ל- 0 או שונה.או לבדוק אם המספר שיצא לך הוא זוגי או איזוגי(ע"י %).
פורסם 2006 במאי 1319 שנים כדי להזיז את הביטים אתה עושה SHIFT.אם אתה רוצה לבדוק אם הביט במקום ה- I דלוק או לא, אתה צריך להזיז I מקומות, לעשות & עם 1, ולבדוק אם שווה ל- 0 או שונה.או לבדוק אם המספר שיצא לך הוא זוגי או איזוגי(ע"י %).מדוע צריך להזיז קודם?AND עם ערך אשר המיקום ה-i שלו דלוק יתן את אותה תוצאה. אפס לא דלוק, כל דבר אחר דלוק.
פורסם 2006 במאי 1319 שנים מכיוון שצריך לזכור את הערכים המתאימים....וגםאם פתאום יחליטו לשנות את הגודל של הCHAR אתה בבעיה.
פורסם 2006 במאי 1319 שנים >> מזיז שמאלה<< מזיז ימינה& וגם| או~ הופך את הביטים^ XOR! אם 0 נותן 1 אם שונה מ0 נותן 0
פורסם 2006 במאי 1419 שנים מחבר int fun(char c, int i){return ((1<<i)&c)!=0;}תוכלו להסביר לי במילים איך זה מתבצע?
פורסם 2006 במאי 1419 שנים זה אומר בדיוק מה שרשמו למעלה.1<<i מזיז את המספר 1 i ביטים שמאלה (שזה זהה ללכפול אותו ב-2 i פעמים).כלומר, 1>>1 זה 2, 1>>2 זה 4, 1>>3 זה 8, וכן הלאה.מה שאתה מקבל הוא מספר שבו הביט במקום ה-i דולק, וכל השאר כבויים.אח"כ עושים למספר הזה AND לוגי עם c, כלומר עוברים על שני המספרים ביט ביט ומדליקים את הביטים שדלוקים בשניהם.בתכלס, כיוון שבמספר רק הביט ה-i דולק, זה אומר שהמספר החדש בדיוק יכיל את הביט ה-i של המספר c.ואז אנחנו בודקים אם הוא 0 או לא.
פורסם 2006 במאי 1419 שנים ניתן לעשות גם את הדבר הבא:int fun(char c, int i){return (c>>i)%2;}אני לא יודע מה יותר יעיל...
פורסם 2006 במאי 1419 שנים מחבר יש לך מסנג'ר שאני יכול לפנות אלייך... אני פשוט לא מצליח להבין את זה ואני אשמח אם תואיל בטובך לעזור לי תודה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.