c_位运算及习题

来源:互联网 发布:身份证查电话号码软件 编辑:程序博客网 时间:2024/06/10 05:23
运算符& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1~取反 ~是一元运算符,用来对一个二进制数按位取反,即将01,将10<< 左移 用来将一个数的各二进制位全部左移N位,右补0>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0经典习题在一个有相同数字的数组中找出唯一一个不同的数#include <stdio.h>  #include <stdlib.h>int  *value;int singleNumber(int A[], int n) {    int i, result = 0;    if (A == NULL || n <= 0) {        return -1;    }    for (i = 0; i < n; i++) {        result ^= A[i];    }    return result;}int main() {    int i, n;    while (scanf("%d", &n) != EOF) {        value = (int*)malloc(sizeof(int)*n);        for (i = 0; i < n; i++) {            scanf("%d", &array[i]);        }        printf("%d\n", singleNumber(array, n));    }    return 0;}实现两个变量的交换#include <stdio.h>#include <stdlib.h>int main(){    int a = 9;    int b = 0;    a = a^b;    b = a^b;    a = a^b;    printf("%d", a, b);    system("pause");    return 0;}
0 0
原创粉丝点击