当前位置: 首页 > news >正文

烟台seo网站推广河南万安建设集团有限公司网站

烟台seo网站推广,河南万安建设集团有限公司网站,网站建设原理试卷,在线教育网站开发时长今天我们来学习C语言中的异或。 文章目录 一、基本知识#xff1a;异或操作满足的定律#xff1a;(important) 二、拓展应用#xff1a;1. 交换两个变量的值#xff1a;2. 判断两个数的奇偶性#xff1a;3. 检测落单的数(出现奇数次的数)#xff1a;检测丢失的数: 4. 加密…今天我们来学习C语言中的异或。 文章目录 一、基本知识异或操作满足的定律(important) 二、拓展应用1. 交换两个变量的值2. 判断两个数的奇偶性3. 检测落单的数(出现奇数次的数)检测丢失的数: 4. 加密和解密 三、与离散数学中的异或进行对比 一、基本知识 ✨在C语言中异或XOR是一种逻辑运算符用符号^表示。异或操作是将两个操作数的每一位进行比较如果相同则结果为0如果不同则结果为1。 左操作数右操作数结果000011101110 例如假设有两整数变量a和b其二进制表示分别为 a 1010 , b 1100执行a ^ b操作后得到的结果是 a ^ b 0110 ✨总结起来0和任何数异或还是任何数1和任何数异或则是任何数的取反。 异或操作满足的定律(important) 结合律对于任意三个操作数a、b、c有(a ^ b) ^ c a ^ (b ^ c)。即异或操作在多个操作数之间满足结合律。 交换律对于任意两个操作数a和b有a ^ b b ^ a。即异或操作的顺序可以交换。 自反性对于任意操作数a有a ^ a 0。即一个数与自身进行异或操作的结果为0。 零元素对于任意操作数a有a ^ 0 a。即一个数与0进行异或操作的结果为它本身。 唯一性对于任意操作数a有a ^ a 0a ^ 0 a。即一个数与自身进行异或操作的结果为0与0进行异或操作的结果为它本身。 二、拓展应用 1. 交换两个变量的值 ✨可以使用异或操作来交换两个变量的值而无需使用第三个变量。 例如 int a 10; int b 20;a a ^ b; b a ^ b; a a ^ b; // 现在a的值为20b的值为10❓可能会有人有疑问为啥右边都是a^b但最终的结果就可以交换呢让我们来一步步分析 首先通过a a ^ b后a的值将会发生改变至于变为多少我们不关心因为没必要算实在想算也可以写出二进制表达后再用定义计算。然后通过b a ^ b后因为a的值已经发生了改变即此式等价于b a ^ b ^ b a ^ 0 a从而将a的值赋给了b。最后a a ^ b a ^ b ^ a a ^ a ^ b 0 ^ b b。从而实现两个数值的交换。 ✨你是否又想到了排序算法中两个值的交换呢当时我们是通过定义一个临时变量中间媒介来完成两个数的交换类似下面这种方法 int tempa; ab; btemp;当然还有很多交换变量值的方法我们这里就不展开论述了以后有机会会进行讲解。 2. 判断两个数的奇偶性 ✨可以使用异或操作来判断两个数的奇偶性。如果一个数的二进制表示的最后一位为1则该数为奇数如果最后一位为0则该数为偶数(我们上节已经讲过了)。因此可以使用异或操作来判断两个数的奇偶性。例如 int num 10; int resultnum ^ 1 if (resultnum) {printf(num是奇数); } else {printf(num是偶数); }为啥要这样写呢❓ 如果一个数为奇数则其的二进制表示的最后一位为1和1异或后最后一位变为0其余位值不变所以异或的结果小于原数(小了1)反之若一个数为偶数则其的二进制表示的最后一位为0和1异或后最后一位变为1其余位值不变所以异或的结果大于原数(大了1) 3. 检测落单的数(出现奇数次的数) ✨异或操作可以用来检测数组中是否存在落单的元素。通过对数组中的所有元素进行异或操作如果结果为0则表示数组中没有落单的元素反之则有且计算结果就是该落单的数。例如 int arr[] {1, 2, 1, 3, 4, 3, 2, 1, 1}; int n sizeof(arr) / sizeof(arr[0]); int result 0;for (int i 0; i n; i) {result result ^ arr[i]; }if (result 0) {printf(数组中没有落单的元素); } else {printf(数组中存在落单的元素,输出如下);printf(%d,result); }检测丢失的数: 给定范围[a,b]的一系列数但是一个调皮的数跑丢了需要你把它找出来请问该怎么找答利用今天学习的异或知识就能轻松解决即把[a,b]所有的数(b-a1个)和丢失一个数的那些数(b-a个)放在一堆然后一起异或重复的数必定两两相消剩下的一个数就是那个调皮的数。 4. 加密和解密 ✨异或操作可以用来进行简单的加密和解密操作。通过将明文和密钥进行异或操作得到密文再将密文和密钥进行异或操作得到明文。例如 char plaintext[] Hello World; char key A; int n strlen(plaintext);for (int i 0; i n; i) {plaintext[i] plaintext[i] ^ key; }printf(加密后的密文%s\n, plaintext);for (int i 0; i n; i) {plaintext[i] plaintext[i] ^ key; }printf(解密后的明文%s\n, plaintext);哈哈,是不是很有趣呢 三、与离散数学中的异或进行对比 ✨离散数学中的异或运算是一种基于布尔代数的运算也称为逻辑异或运算。它的规则与C语言中的异或运算类似只不过它的操作对象是逻辑值真或假。 在离散数学中异或运算的结果为真1的条件是有且仅有一个操作数为1。如果两个操作数都为1或都为0则结果为假0。 例如假设有两个命题p和q它们的真假分别为(p 1q 0) 或(p0,q1)。那么p ⊕ q的结果为1因为有且仅有一个操作数为1。 ———————————————— 好了今天的讲解就到这里了相信你也是收获满满吧!❤️
http://www.pierceye.com/news/463763/

相关文章:

  • 建立网站免费dedecms网站地图制作
  • 网页设计公司网站制作做网站最主要是那个一类商标
  • 卫生局网站建设方案网站架构设计英文翻译
  • 学做衣服网站有哪些智能开发平台软件
  • wordpress 下载站插件wordpress清楚所有评论
  • 公司网站建设工作计划网站设置受信任
  • 网站如何做实名验证码深圳企业网站推广
  • 傻瓜式大型网站开发工具餐饮业手机php网站
  • 网站建设小细节图片东阳网站建设yw126
  • 为什么找不到做网站的软件怎么做音乐mp3下载网站
  • 做一个网站需要什么网络营销方式分析论文
  • 可以做3d电影网站企业网站优化应该怎么做
  • 中山做网站联系电话app客户端开发公司
  • 秦皇岛网站推广价钱南京建设网站制作
  • 2018钓鱼网站建设邢台seo公司
  • 深圳建设交易中心网站域名网站建设
  • 做网站色弱可以吗一个网址多少钱
  • 如何查询网站接入信息产品营销网站
  • 常用博客建站程序遂溪网站开发公司
  • 网站开发软件系统安徽通皖建设工程有限公司网站
  • 意派网站开发新手篇做平面常用的网站
  • 广州网站设计费用深圳室内设计师网
  • 有什么可以做兼职的网站吗建设网站的需求分析
  • 专门做进口产品的网站6wordpress赚钱方法
  • 长兴网站建设公司郫县城乡规划建设管理局网站
  • 天津建设工程信息网站搜索引擎推广是什么工作
  • 网站的系统建设方式网站建设报价表格
  • 商城展示网站建设我劝大家不要学android
  • 官网的建站过程云南网站建设营销
  • 那个网站上有打码的任务做台州做网站的公司