位运算符


位运算符

位运算作用于整数类型的运算对象,并把运算对象看成是二进制位的集合。

  • 如果运算对象是小整形将会被自动提升为较大的整数类型。
  • 运算对象可以是带符号的也可以是无符号的,如果运算对象是带符号的数并且是负值,那么位运算如何处理该符号位是依赖于机器的。并且,此时的左移操作会改变符号的值,因此是一种未定义的行为。
  • 关于符号位如何处理没有明确规定,所以强烈建议将位运算符用于处理无符号类型。

移位运算符

左移运算符(<<)在右侧插入值为0 的二进制位。
右移运算符(>>)的行为则依赖于其左侧对象的类型,如果该运算对象是无符号类型,在左侧插入值为0的二进制位;如果该运算对象是带符号类型,在左侧插入符号位的副本值或值为0的二进制位,如何选择视环境而定。

移位运算符又叫作IO运算符,满足左结合律:

cout<<"hi"<<"there"<