c++基础——运算符

参考链接

位运算符
  • 位与运算符 (&)
    对参与运算的两数的二进制形式(补码形式)进行位与,对应的两个二进制位均为1时, 结果为1,否则为0
int a = 2;	// 补码: 00000010
int b = 1;	// 补码: 00000001
int c = 3;	// 补码: 00000011

// a & b 进行补码与操作
cout << (a & b) << endl;	// 0
cout << (a & c) << endl; 	// 2
  • 位或运算符(|)
    对参与运算的两数的二进制形式(补码形式)进行位或,对应的两个二进制位只要有一个为1时,结果为1, 否则为0
int a = 2;	// 补码: 00000010
int b = 1;	// 补码: 00000001
int c = 3;	// 补码: 00000011

// a | b 进行位或
cout << (a | b) << endl;	// 3
cout << (a | c) << endl;	// 3
  • 位异或运算(^)
    对参与运算的两数的二进制形式(补码形式)进行位非,对应的两个二进制位相异时,结果位1,否则为0
int a = 2;	// 补码: 00000010
int b = 1;	// 补码: 00000001
int c = 3;	// 补码: 00000011

// a ^ b 进行异或运算
cout << (a ^ b) << endl;	// 3
cout << (a ^ c) << endl;	// 1
  • 按位取反运算符 (~)
    求反运算符为单目运算符,具有右结合性,对参与运算的数的二进制位进行取反操作
int a = 2;	// 补码: 00000010
int b = 1;	// 补码: 00000001
int c = 3;	// 补码: 00000011

// ~ 取反运算,  补码取反+1再加符号为结果, ~n = -(n+1)
cout << ~a << endl;	// -3
cout << ~b << endl;	// -2
cout << ~c << endl;	// -4
  • 左移运算符 (<<)
    左移n位即乘2的n次方,把<<左边的数的二进制位全部左移n位, n为<<右边指定,高位丢弃,低位补0
int a = 2;	// 补码: 00000010
int b = 1;	// 补码: 00000001
int c = 3;	// 补码: 00000011

// a << 1 左移运算
cout << (a << 1) << endl;	// 4
cout << (b << 1) << endl;	// 2
cout << (c << 1) << endl;	// 6
  • 右移运算符 (>>)
    右移n位即除以2的n次方,把<<左边的数的二进制位全部右移n位,n为<<右边指定,(对于有符号数, 符号位向右移动后,正数的话补0,负数补1, 对于有符号数,在右移时,符号位将随同移动: 当为正数时, 最高位补0, 而为负数时,符号位为1, 也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位. 最高位是补0或是补1 取决于编译系统的规定)
int a = 2;	// 补码: 00000010
int b = 1;	// 补码: 00000001
int c = 3;	// 补码: 00000011

// a >> 1 右移运算
cout << (a >> 1 ) << endl;	// 1
cout << (b >> 1 ) << endl;	// 0
cout << (c >> 1 ) << endl;	// 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值