C位运算

位运算

1.位运算思考

void main(){
    
    int a = 1>>2;
    int b = -1>>2;
    int c = 1<<2;
    int d = -1<<2;
    printf("a=%d b=%d c=%d d=%d",a,b,c,d);
    getchar();
}

2.二进制再运算的说明

  • 二进制是缝2进位的进位制,0,1是基本算符
  • 现代的电子计算机技术全部采用的是二进制,因为它只使用0,1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制数用0和1两个数字及其组合来表示任何数。进位规则是逢2进1,数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。

3,原码,反码,补码

  • 对于有符号数而言
    • 二进制的最高位是符号位,0表示正数,1表示负数
    • 正数的原码反码补码都一样
    • 负数的反码=它的原码符号位不变,其他位取反
    • 负数的补码=反码+1
    • 在计算机运行的时候,都是以补码的方式来运算的

4.位运算符

4.1 C中位运算符说明

  • 运算规则
    • 按位与& :两位全为1,结果为1,否则为0
    • 按位或|:两位有一个为1,结果为1,否则为0
    • 按位异或^:l两位一个为0,一个为1,结果为1,否则为0
    • 按位取反~:
    • 算数右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
    • 算数左移<<:符号位不变,低位补0
posted @ 2021-01-11 17:16  mx_info  阅读(159)  评论(0)    收藏  举报