~
. בשונה מפעולות &
ו-|
, פעולת NOT על סיביות מתבצעת על אופרנד (operand) אחד הרשום מימינו. פעולה זו הופכת כל סיבית לערך הנגדי שלו, 0 הופך ל-1 ו-1 הופך ל-0. לדוגמה:- קוד: בחר הכל
0 1 operand1
----------
1 0 ~ operand1
int a = 103; // binary: 0000000001100111
int b = ~a; // binary: 1111111110011000 = -104
אולי תופתעו לראות מספר שלילי 104- כתוצאה של פעולה זו. זה קורה בגלל שהסיבית הגבוהה ביותר (השמאלית) במשתנה מסוג מספרים שלמים int נקראת גם סיבית סימן. כאשר הסיבית הגבוהה ביותר בעלת ערך 1, המספר מפוענח כמספר שלילי. מספרים השליליים מיוצגים בשיטת משלים ל-2 (two's complement). לפרטים נוספים ראו מאמר של Wikipedia על משלים ל-2.
יהיה מעניין לציין שלכל מספר שלם בערך X, פעולת
X~
תהפוך אותו לערך X-1-.לפעמים היפוך של סיביות במספרים מסוג
signed integer
יכול לגרום להפתעות לא רצויות.ראו גם:
פירוט שפת תכנות לסביבת Arduinoעמוד זה הוא תרגום של Bitwise NOT (~) לפי רישיון Creative Commons Attribution-ShareAlike 3.0.