ABA


"הגדרת משתנה בגודל ביט - שפת C...שאלה..."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #11679 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11679
Fire_Man

דרג אמינות חבר זה
   20:17   12.01.05   
אל הפורום  
  הגדרת משתנה בגודל ביט - שפת C...שאלה...  
 
   ערכתי לאחרונה בתאריך 12.01.05 בשעה 20:21 בברכה, Fire_Man
 
אני רוצה לבנות טיפוס חדש....
שבוא בעצם יש 5 משתנים בוליאנים בגידל ביט אחד בלבד.
אני יודע שאפשר לעשות את זה....אבל אין לי מושג איך מגדירים משתנה בגודל ביט אחד.
נאמר לי שצריך להגדיר את המשתנה למשל כ char ואז לפנות לכל אחד מהביטים ללא מיסוך, אלא בצורה ישירה.

ואז נגיד וכל הביטים דולקים אז זה יהיה ככה:
11111 בבינארי... שזה בעצם 31 באוקטלי.
עכשיו השאלה איך אני ניגש ממש לביט עצמו....ללא מיסוך(AND)
לדוגמא אני רוצה לכבות(לאפס) את הביט הראשון שיהיה ככה:
01111
אין אני עושה את זה?....בצורה ישירה...תודה!

אשמח לעזרה. תודה רבה!


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  אין בC משתנה בגודל ביט Boaz_fr 13.01.05 13:34 1
     תיקון לשורה האחרונה hll 13.01.05 15:01 2
         צודק Boaz_fr 13.01.05 20:58 4
     הבנתי...תודה! עוד שאלה... Fire_Man 13.01.05 17:19 3
         char הוא BYTE ויש בו 8 ביטים Boaz_fr 13.01.05 21:00 5

       
Boaz_fr

דרג אמינות חבר זה
   13:34   13.01.05   
אל הפורום  
  1. אין בC משתנה בגודל ביט  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 13.01.05 בשעה 13:38 בברכה, Boaz_fr
 
אני לא מכיר שום שפת תיכנות שנותנת גישה ישירה לאויבקטים הקטנים מByte

לגבי מה ששאלת:

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

1. "מדליק" את הביט השני במשתנה bX
2. "מכבה" את הביט השני במשתנה bX
3. מחזיר את הערך שיש בביט השני במשתנה bX


unsign char bX = 0;
bX |= 0X2;
bX &= 0XFD;
int nRet = bX | 0X2;

אתה יכול בקלות ליצור אוביקט שיתפקד "כמערך ביטים" אשר יחזיר ערכים באמצעות ביטוים לוגים כפי שכתבתי למעלה


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

דרג אמינות חבר זה
   15:01   13.01.05   
אל הפורום  
  2. תיקון לשורה האחרונה  
בתגובה להודעה מספר 1
 
  

int nRet = bX & 0x2;

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


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

דרג אמינות חבר זה
   20:58   13.01.05   
אל הפורום  
  4. צודק  
בתגובה להודעה מספר 2
 
  


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

דרג אמינות חבר זה
   17:19   13.01.05   
אל הפורום  
  3. הבנתי...תודה! עוד שאלה...  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 13.01.05 בשעה 17:19 בברכה, Fire_Man
 
כמה ביטים יש בעצם בchar?
ולמה הגדרת אותו כ unsign


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

דרג אמינות חבר זה
   21:00   13.01.05   
אל הפורום  
  5. char הוא BYTE ויש בו 8 ביטים  
בתגובה להודעה מספר 3
 
   זה יעבוד דם בchar רגיל אבל יותר נכון להתיחס אליו במשתנה שאינו יכול להיות שלילי (ההסדל בין char לבין unsign char הוא רק בהתיחסות שלך אליו מבחינת המחשב הם אותו דבר בדיוק)


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

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

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



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