ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

与(&)运算和或(|)运算

2022-09-14 12:31:40  阅读:280  来源: 互联网

标签:逻辑 false 运算 && printf true


与运算

与运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;

逻辑且的符号是&&,符号上非常接近。二进制就是通过与、或、异或、位移等完成运算的,跟我们所认知的十进制运算不一样。与和或的运算规则比较难理解也很容易忘记,我发现可以借助逻辑且和逻辑或来理解。

0 代表 false、1 代表 true。逻辑且必须要左右两边的布尔都是 true 才返回 true,否则返回 false。

#include <stdio.h>

int main(void)
{
  printf("0 && 0 = %d\n", 0 && 0);
  printf("0 && 1 = %d\n", 0 && 1);
  printf("1 && 0 = %d\n", 1 && 0);
  printf("1 && 1 = %d\n", 1 && 1);
  return 0;
}

以上四种的执行结果:

第一个、第二个和第三个“逻辑且”,有一个 false 值(假值,也就是数字 0),不满足逻辑且的规则:都是真才返回真。而第四个且运算中,全都是 true 值(真值,也就是数字 1),满足逻辑且的规则,所以结果是 1。

我们可以借助“逻辑且”来理解“与运算”。开头给出的“与运算”规则,和我们用逻辑且运算出来的结果是一样的。但是,要注意的是,逻辑运算终究只能对布尔进行运算。虽然,true 可以是 1,false 可以是 0,但是数字 2、3、4 都被视作为 true。所以 3&&5=1

“与运算”不是逻辑运算,跟 +、-、*、/ 一样,都是算术运算符。不同的是,“与运算”是对二进制进行运算,规则上跟逻辑且相似。上面所说的只是在借助“逻辑且”来理解“与运算”的规则而已

3 和 5 的与运算结果:

image

3 的二进制是 011,5 的二进制是 101。借助逻辑且,只要有 false(0)就是 false(0)。011&101=001,001 就是十进制的 1。所以,3&5=1

或运算

或运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;

0 代表 false、1 代表 true。逻辑或中只要其中一个是 true 就是 true。

#include <stdio.h>

int main(void)
{
  printf("0 || 0 = %d\n", 0 || 0);
  printf("0 || 1 = %d\n", 0 || 1);
  printf("1 || 0 = %d\n", 1 || 0);
  printf("1 || 1 = %d\n", 1 || 1);
  return 0;
}

以上四种的执行结果:

第一个“逻辑或”,都是 false 值(假值,也就是数字 0),没有一个 true,所以结果是 false,即 0。而最后三个有一个 true 值(真值,也就是数字 1),所以结果是 1。

上面所说的只是在借助“逻辑或”来理解“或运算”的规则。3 或 5,即 011|101=111,111 就是十进制的 7。所以,3|5=7

标签:逻辑,false,运算,&&,printf,true
来源: https://www.cnblogs.com/Enziandom/p/16692612.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有