self[nth] -> Integer
[permalink][rdoc][edit]self[nth, len] -> Integer
self[range] -> Integer
-
nth 番目のビット(最下位ビット(LSB)が 0 番目)が立っている時 1 を、そうでなければ 0 を返します。
- [PARAM] nth:
- 何ビット目を指すかの数値
- [PARAM] len:
- 何ビット分を返すか
- [PARAM] range:
- 返すビットの範囲
- [RETURN]
- self[nth] は 1 か 0
- [RETURN]
- self[i, len] は (n >> i) & ((1 << len) - 1) と同じ
- [RETURN]
- self[i..j] は (n >> i) & ((1 << (j - i + 1)) - 1) と同じ
- [RETURN]
- self[i...j] は (n >> i) & ((1 << (j - i)) - 1) と同じ
- [RETURN]
- self[i..] は (n >> i) と同じ
- [RETURN]
- self[..j] は n & ((1 << (j + 1)) - 1) が 0 なら 0
- [RETURN]
- self[...j] は n & ((1 << j) - 1) が 0 なら 0
- [EXCEPTION] ArgumentError:
- self[..j] で n & ((1 << (j + 1)) - 1) が 0 以外のとき
- [EXCEPTION] ArgumentError:
- self[...j] で n & ((1 << j) - 1) が 0 以外のとき
a = 0b11001100101010 30.downto(0) {|n| print a[n] } # => 0000000000000000011001100101010 a = 9**15 50.downto(0) {|n| print a[n] } # => 000101110110100000111000011110010100111100010111001
n[i] は (n >> i) & 1 と等価なので、負のインデックスは常に 0 を返します。
p 255[-1] # => 0
0b01001101[2, 4] #=> 0b0011 0b01001100[2..5] #=> 0b0011 0b01001100[2...6] #=> 0b0011 # ^^^^
self[nth]=bit (つまりビットの修正) がないのは、Numeric 関連クラスが immutable であるためです。