Ruby位运算符

Ruby位运算符教程

Ruby 中,位运算符主要是用于数值类型的二进制的运算。

Ruby位运算符语法

运算符 说明 范例
& 按位与 A & B
| 按位或 A | B
^ 按位异或 A ^ B
~ 按位取反 ~A
<< 左移运算符 A << 2
>> 右移运算符 A >> 2

按位与

  • 双目运算符。
  • 其功能是参与运算的两数各对应的二进制位相与。
  • 运算规则是如果两数对应的二进制位都为 1,那么结果为 1, 否则结果为 0。

按位或

  • 双目运算符。
  • 其功能是参与运算的两数各对应的二进制位相或。
  • 运算规则是如果两数对应的二进制位有一个为 1,那么结果为 1, 否则结果为 0。

按位异或

  • 双目运算符。
  • 其功能是参与运算的两数各对应的二进制位相异或。
  • 运算规则是如果两数对应的二进制位不同,那么结果为 1, 否则结果为 0。

按位取反

  • 单目运算符。
  • 其功能是参与运算的数各对应的二进制位取反。
  • 运算规则是如果原来的数对应的二进制位为 1,那么结果为 0, 否则结果为 1。

左移

  • 双目运算符。
  • 其功能是把运算符 << 左边的运算数的各二进制位全部左移若干位,高位丢弃,低位补 0。
  • 运算规则是左移 N 位,就是乘以 2 的 N 次方。

右移

  • 双目运算符。
  • 其功能是把运算符 << 左边的运算数的各二进制位全部右移若干位。
  • 运算规则是右移 N 位,就是除以 2 的 N 次方。

案例

按位与运算

使用 & 运算符,实现按位与运算

#!/usr/bin/ruby -w # -*- coding : utf-8 -*- puts "HaiCoder(www.haicoder.net)" a = 111 b = 222 c = a & b printf("c = %d\n", c)

程序运行后,控制台输出如下:

16_Ruby位运算符.png

首先,我们定义了两个变量,a 和 b。 接着,我们使用按位与运算符 &,将变量 a 的值与变量 b 的值进行相与运算,并将运算结果赋值给 c。

按位或运算

使用 | 运算符,实现按位或运算

#!/usr/bin/ruby -w # -*- coding : utf-8 -*- puts "HaiCoder(www.haicoder.net)" a = 111 b = 222 c = a | b printf("c = %d\n", c)

程序运行后,控制台输出如下:

17_Ruby位运算符.png

首先,我们定义了两个变量,a 和 b。 接着,我们使用按位或运算符 |,将变量 a 的值与变量 b 的值进行相或运算,并将运算结果赋值给 c。

按位异或运算

使用 ^ 运算符,实现按位异或运算

#!/usr/bin/ruby -w # -*- coding : utf-8 -*- puts "HaiCoder(www.haicoder.net)" a = 111 b = 222 c = a ^ b printf("c = %d\n", c)

程序运行后,控制台输出如下:

18_Ruby位运算符.png

首先,我们定义了两个变量,a 和 b。 接着,我们使用按位异或运算符 ^,将变量 a 的值与变量 b 的值进行相异或运算,并将运算结果赋值给 c。

按位取反运算

使用 ~ 运算符,实现按位取反运算

#!/usr/bin/ruby -w # -*- coding : utf-8 -*- puts "HaiCoder(www.haicoder.net)" a = 111 b = ~a printf("b = %d\n", b)

程序运行后,控制台输出如下:

19_Ruby位运算符.png

我们定义了变量 a 并且使用了取反运算符 ~,将变量 a 的取反后的结果赋值给了变量 b。

Ruby位运算符总结

在 Ruby 中,位运算符主要是用于数值类型的二进制的运算。按位与的运算规则是,如果两数对应的二进制位都为 1,那么结果为 1, 否则结果为 0。

按位或的运算规则是如果两数对应的二进制位有一个为 1,那么结果为 1, 否则结果为 0。按位异或的运算规则是如果两数对应的二进制位不同,那么结果为 1, 否则结果为 0。