美文网首页IOSC++程序员
小朋友学C语言(24):位运算符

小朋友学C语言(24):位运算符

作者: 海天一树X | 来源:发表于2017-10-15 19:24 被阅读0次

位运算符有四个:“与(&)”、“或(|)”、“异或(^)”、“按位取反(~)”。

在了解位运算符之前,请先复习逻辑运算符:
小朋友学C语言(12):逻辑运算符

位运算,就是对应的bit参与运算,结果是整型数。
逻辑运算,是两个逻辑变量(0或1,非0都算做1)参与运行,结果是逻辑值(0或1)。

(一)位运算符“与”(&)

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

例1:13 & 6 = 4

与.png

注意:13在计算机里实际占32位,在1101的左边还有28个0,为了表示简便,将左侧的28个0都省略了。
同样,6的二制式形式0100的最左边也有28个0。

编程验证:

#include <stdio.h>

int main()
{
    int a = 13;
    int b = 6;
    int result = a & b;
    printf("%d & %d = %d\n", a, b, result);
    
    return 0;
}

运行结果:

13 & 6 = 4

(二)位运算符“或”(|)

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

例2:13 | 2 = 15

或.png

程序验证:

#include <stdio.h>

int main()
{
    int a = 13;
    int b = 2;
    printf("%d & %d = %d\n", a, b, a | b);
    
    return 0;
}

运行结果:

13 & 2 = 15

(三)位运算符“异或”(^)

运算规则(相同为0,不同为1):
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

例3:13 ^ 7 = 10

异或.png

验证程序:

#include <stdio.h>

int main()
{
    int a = 13;
    int b = 7;
    printf("%d & %d = %d\n", a, b, a ^ b);
    
    return 0;
}

运行结果:

13 & 7 = 10

(四)位运算符“按位取反”(~)

运算规则:
~1 = 0
~0 = 1

例4:~1 = -2(这里的-1指的是十进制的-1,二进制为00000000 00000000 00000000 00000001)
分析
计算机是以补码的形式存放整数的。
对于正整数来说,原码、反码、补码一样。
对于负整数来说,补码 = 反码 + 1
1的补码是00000000,00000000,00000000,00000001
使用取反运算符后,变为11111111,11111111,11111111,11111110
注意,这是一个补码。最高位是1,表示它是一个负数。
负数的原码 = 补码 - 1,再取反
11111111,11111111,11111111,11111110 - 1 = 111111111,11111111,11111111,11111101
取反(注意符号位不参与取反)后为10000000,00000000,00000000,00000010
这个数即为十进制的-2

#include <stdio.h>

int main() 
{
    int a = 1;
    printf("~%d = %d", a, ~a);
    
    return 0;
}

运行结果:

~1 = -2

想了解小朋友学编程可加QQ 307591841 或微信 307591841

关注微信公众号请扫二维码 qrcode_for_kidscode_258.jpg

相关文章

  • 小朋友学C语言(24):位运算符

    位运算符有四个:“与(&)”、“或(|)”、“异或(^)”、“按位取反(~)”。 在了解位运算符之前,请先复习逻辑...

  • 16_位运算符分析

    关键词: C语言中的位运算符、 左移和右移注意点、位运算防错准则、 位运算符和逻辑运算符的区别 1. C语言中的位...

  • 嵌入式C语言的位运算

    想必大家都了解&&(且运算符),||(或运算符),在C语言的位运算中 ,位或运算|,位与运算&,异或^,取反~。等...

  • 【初识C语言】C语言中的运算符

    C语言中的运算符 1运算符和表达式 C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具。C语言的运算异常...

  • C语言中关于逗号运算符的理解

    在C语言中运算符有很多,包括算数运算符、关系运算符、赋值运算符、位运算符、逻辑运算符、三目运算符、sizeof运算...

  • 关于逗号运算符的理解

    在C语言中运算符有很多,包括算数运算符、关系运算符、赋值运算符、位运算符、逻辑运算符、三目运算符、sizeof运算...

  • C语言:按位运算

    C语言:按位运算 C有这些按位运算的运算符& 按位的与| 按位的或~ 按位取反^ 按位的异或<< ...

  • C语言基础教程之运算符

    C语言内置运算符丰富到令人头皮发麻,C语言基础教程之运算符篇 C语言运算符 运算符是告诉编译器执行特定数学或逻辑函...

  • 用了这个运算符,算法的时间复杂度竟然降了一个数量级

    其实这个运算符很容易被人忽略,他就是C语言中的位异或运算符^位运算符家族中,最常用的,莫过于异或运算符。我们先看异...

  • 基础位运算符

    位运算符是用来对二进制位进行操作的 c语言中有6种位运算符: & 按位与| 按位或^ 按位异或~ 取反<< 左移右...

网友评论

    本文标题:小朋友学C语言(24):位运算符

    本文链接:https://www.haomeiwen.com/subject/emwcuxtx.html