C语言day06-08位运算符练习3

pragma mark 位运算符练习3

pragma mark 概念

pragma mark 代码

#include <stdio.h>
int main()
{
#pragma mark 要求交换两个变量的值
    int a = 10;
    int b = 5;
    printf("交换前:a = %i,b = %i \n",a,b);
    
    // 第一种方式
#pragma mark 第1种方式 利用第三方变量
    /*
    int temp = a;
    a = b;
    b = temp;
    printf("交换后:a = %i,b = %i \n",a,b);
    */
    
#pragma mark 第2种方式 利用算术运算
    // 第二种方式
    /*
    a = a + b;  // a == 15
    b = a - b;  // b == 10
    a = a - b;  // a == 5
    printf("交换后:a = %i,b = %i \n",a,b);
    */
#pragma mark 第3种方式 利用异或
    
    a = a ^ b;
    /*
     0000 0000 0000 0000 0000 0000 0000 1010
    ^0000 0000 0000 0000 0000 0000 0000 0101
     ----------------------------------------
     0000 0000 0000 0000 0000 0000 0000 1111
     */
    b = a ^ b;  // b = a ^ b ^ b = a;
    /*
     0000 0000 0000 0000 0000 0000 0000 1111
    ^0000 0000 0000 0000 0000 0000 0000 0101
     ----------------------------------------
     0000 0000 0000 0000 0000 0000 0000 1010   = 10;
     */
    
    a = a ^ b;  // a = a ^ a ^ b = b;
    
    /*
     0000 0000 0000 0000 0000 0000 0000 1111
    ^0000 0000 0000 0000 0000 0000 0000 1010
     ----------------------------------------
     ^0000 0000 0000 0000 0000 0000 0000 0101 == 5;

     */
    printf("交换后:a = %i,b = %i \n",a,b);
    
    b = a ^ b;
    a = a ^ b;  // a == a ^ a ^ b == b
    b = a ^ b;  // b == a ^ b ^ b == a
    
    printf("交换后:a = %i,b = %i \n",a,b);

#pragma mark 做一个简单的加密(之后用的可能是:dsc,md5,xe);
    // 用户密码,纯数组
    int pwd = 123456789;
    // 对用户密码进行简单加密
    int result = pwd ^ 998;
    printf("加密后:%d\n",result);
    // 对用户密码进行解密
    result = result ^ 998;
    printf("解密后:%d\n",result);
    
    return 0;
}

    原文作者:liyuhong165
    原文地址: https://www.jianshu.com/p/e1ce2f191aba
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞