C++中的补码公式与位域

C++中的补码公式与位域:

代码很简单就不多说:

补码公式:

#include 
using namespace std;

void operator_1(void);
void operator_2(void);
void operator_3(void);
int main(void) {

        /*
        -x = ~x+1 = ~(x-1)
        ~x = -x-1
        -(~x) = x+1
        ~(-x) = x-1


        x+y = x - ~y-1 = (x|y) + (x&y)
        x-y = x + ~y+1 = (x|~y) - (~x&y)
        x^y = (x|y) - (x&y)
        x|y = (x& ~y) + y
        x&y = (~x|y) - ~x


        x==y :  ~(x-y|y-x)
        x!=y :  x-y|y-x
        x位域 
 
#include 
typedef struct bs {
        int a:2;
        int b:1;
        int c:12;
        unsigned d:4

}bs;
struct bit_2 {
        unsigned a:2;
        unsigned :2;  //It can't use
        unsigned :0;  //NULL

        unsigned b:4;
        unsigned c:4;

};
int main(void) {
        bs bit;
        printf("sizeof(%d) \n",sizeof(struct bs));
        bit.a = 4;
        bit.b = 1;
        bit.c = 34235;
        printf("a: %d   b: %d  c: %d\n", bit.a, bit.b, bit.c);

        return 0;
}

你可能感兴趣的:(C++中的补码公式与位域)