C语言位运算符

来源:互联网 发布:淘宝晚上收货时间 编辑:程序博客网 时间:2024/04/30 14:12



#include <stdio.h>void main(){    int A=8;//(8)10=(1000)2    int B=9;//(9)10=(1001)2    printf("位或运算:A|B=%d\n", A|B);//"|"表示位或,有一个1就是1,1000|1001=1001=(9)10    printf("位与运算:A&B=%d\n", A&B);//8    printf("位异或运算:A^B=%d\n", A^B);//1    printf("位取反运算:~A=%d\n", ~A);    //1A:0000 0000  0000 0000  0000 0000 0000 1000    //~A:1111 1111  1111 1111  1111 1111 1111 0111  (补码)    //~A:1000 0000  0000 0000  0000 0000 0000 1001  (原码:补码按位取反末位加一):所有~A=-9    printf("位左移运算:A<<2=%d\n", A<<2);//32    printf("位右移运算 :B>>2=%d\n", B>>2);//2    int MAX_INT=2147483647;    int MIN_INT=-1;    printf("位左移运算:MAX_IN<<1=%d\n",MAX_INT<<1);    //1111 1111  1111 1111  1111 1111  1111 1110<---最后一位是用零补上 的所以是--->-2    printf("位右移运算:MIN_IN>>1=%d\n",MIN_INT>>1);    //1111 1111  1111 1111  1111 1111  1111 1111--->右移一位后,用符号位补全,结果还是-1    int i=0;    while(i++<10)    {        printf("1位右移运算:MIN_IN>>1=%d\n",MIN_INT>>1);//符号位补全,结果还是-1    }}
结果:

位或运算:A|B=9位与运算:A&B=8位异或运算:A^B=1位取反运算:~A=-9位左移运算:A<<2=32位右移运算 :B>>2=2位左移运算:MAX_IN<<1=-2位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-11位右移运算:MIN_IN>>1=-1



原创粉丝点击