逍遥自在学C语言 | 位运算符^的高级用法

这篇具有很好参考价值的文章主要介绍了逍遥自在学C语言 | 位运算符^的高级用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在上一篇文章中,我们介绍了|运算符的高级用法,本篇文章,我们将介绍^ 运算符的一些高级用法。

逍遥自在学C语言 | 位运算符^的高级用法

一、人物简介

  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

逍遥自在学C语言 | 位运算符^的高级用法

  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

逍遥自在学C语言 | 位运算符^的高级用法

二、交换两个变量的值

#include <stdio.h>

int main() 
{
    int a = 10;
    int b = 20;
    printf("交换前: a = %d, b = %d\n", a, b);
    a ^= b;
    b ^= a;
    a ^= b;
    printf("交换后: a = %d, b = %d\n", a, b);
    return 0;
}

逍遥自在学C语言 | 位运算符^的高级用法

  • 两个相同的数,异或结果为0
  • 第一次的a ^= b 等价于 a = a ^ b
  • b ^= a 此时等价于 b = b ^ a ^ b ,结果为 b = a
  • 第二次的a ^= b 此时等价于 a = a ^ b ^ a,结果为 a = b
  • 这样ab的数值就进行了交换

三、判断两个变量的符号是否相同

#include <stdio.h>

int main() 
{
    int x = 10;
    int y = -20;
    if ((x ^ y) < 0) 
    {
        printf("x 和 y符号相反\n");
    }
    else 
    {
        printf("x 和 y符号相同\n");
    }
    return 0;
}

逍遥自在学C语言 | 位运算符^的高级用法

  • 有符号数的最高位是符号位,0表示正数,1表示负数
  • 如果两个有符号数的最高位相同,则最高位异或结果为0,反之则为1

四、将一个数的某些位翻转

#include <stdio.h>
int main() 
{
    unsigned int num = 12; // 0b1100
    unsigned int mask = 7; // 0b0111
    unsigned int result = num ^ mask; // 0b1011 
    printf("原始数据: %u\n", num);
    printf("掩码: %u\n", mask);
    printf("位翻转后: %u\n", result);
    return 0;
}

逍遥自在学C语言 | 位运算符^的高级用法

  • num的二进制表示为1100,mask的二进制表示为0111
  • 从低位往高位数,num和mask第三位相同,都为1,所以这一位的异或结果为0
  • 最终的结果为1011

五、求两个数的平均数

#include <stdio.h>
int main()
{
  int a = 15;	// 0b1111
  int b = 5;	// 0b0101
  int avg = (a&b) + ((a^b)>>1);
  printf(" %d 和 %d 的平均数为 %d\n", a, b, avg);
  return 0;
}

逍遥自在学C语言 | 位运算符^的高级用法

  • a的二进制表示为1111b的二进制表示为0101
  • 按位与(&)运算后得到两者相同的部分0101
  • 按位异或(^)运算后得到两者不同的部分1010
  • (a ^ b)>> 1,等价于(a ^ b)/2,也就是将两者不同的部分除以2
  • 相同的部分,加上二分之一不同的部分,就得到两个数的平均数

小结

通过这篇文章,我们学会了用位运算符^的4种高级用法

1、交换两个变量的值

2、判断两个变量的符号是否相同

3、将一个数的某些位翻转

4、求两个数的平均数

在下一篇文章中,我们将介绍位运算符~的一些高级用法。

📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!文章来源地址https://www.toymoban.com/news/detail-411288.html

到了这里,关于逍遥自在学C语言 | 位运算符^的高级用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 逍遥自在学C语言 位运算符 "|" 的5种高级用法

    在上一篇文章中,我们介绍了 运算符的高级用法,本篇文章,我们将介绍 | 运算符的一些高级用法。 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 通过这篇文章,我们学会了用位运算符 | 的5种高

    2023年04月11日
    浏览(35)
  • 逍遥自在学C语言 | 赋值运算符

    在C语言中,赋值运算符用于将一个值赋给变量 这个过程分为两个步骤: 计算赋值运算符右侧的表达式 将结果赋给左侧的变量。 C语言提供了多个不同的赋值运算符,包括基本的赋值运算符、复合赋值运算符以及条件赋值运算符等 第一位闪亮登场,有请今后会一直教我们C语

    2023年04月24日
    浏览(54)
  • 逍遥自在学C语言 | 位运算符的基础用法

    第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 位运算符是一组用于在二进制数之间进行操作的运算符 运算符 名称 示例 位与 a b | 位或 a | b ^ 位异或 a ^ b ~ 位取反 ~a 二进制左移 a 2 二进制右移 a

    2023年04月08日
    浏览(69)
  • 逍遥自在学C语言 | 函数初级到高级解析

    函数是C语言中的基本构建块之一,它允许我们将代码组织成可重用、模块化的单元。 本文将逐步介绍C语言函数的基础概念、参数传递、返回值、递归以及内联函数和匿名函数。 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学

    2024年02月12日
    浏览(42)
  • 逍遥自在学C语言 | 函数初级到高级解析

    函数是C语言中的基本构建块之一,它允许我们将代码组织成可重用、模块化的单元。 本文将逐步介绍C语言函数的基础概念、参数传递、返回值、递归以及内联函数和匿名函数。 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学

    2024年02月11日
    浏览(37)
  • 逍遥自在学C语言 | 多级指针探秘

    多级指针在C语言中是一种特殊的指针类型,它可以指向其他指针的指针。 通过多级指针,我们可以间接地访问或修改存储在内存中的数据。 在本文中,我们将讨论多级指针的概念、使用方法、使用场景以及常见错误及其避免方法。 第一位闪亮登场,有请今后会一直教我们

    2024年02月10日
    浏览(43)
  • 逍遥自在学C语言 | 指针的基础用法

    在C语言中,指针是一项重要的概念,它允许我们直接访问和操作内存地址。 可以说,指针是C语言一大优势。用得好,你写程序如同赵子龙百万军中取上将首级;用得不好,则各种问题层出不穷,有种双拳难敌四手的感觉。 本文将介绍指针的基础知识,包括指针的定义、初始

    2024年02月09日
    浏览(43)
  • 逍遥自在学C语言 | 枚举的那些事儿

    在C语言中,枚举是一种方便组织和表示一组相关常量的工具。枚举类型有助于提高代码的可读性和可维护性。本文将介绍C语言枚举的基本概念、语法和用法,以及一些高级技巧。 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学

    2024年02月08日
    浏览(44)
  • 逍遥自在学C语言 | for循环详解

    C语言中的循环结构时, for 循环是最常用的一种。它允许重复执行一段代码,直到满足特定条件为止。 本文将详细介绍 for 循环的用法,并提供相关的可编译运行的C代码示例。 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习

    2024年02月08日
    浏览(39)
  • 逍遥自在学C语言 | 指针函数与函数指针

    在C语言中,指针函数和函数指针是强大且常用的工具。它们允许我们以更灵活的方式处理函数和数据,进而扩展程序的功能。 本文将介绍指针函数和函数指针的概念,并讲解一些常见的应用示例。 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包