Class: Word
Overview
Representa las palabras en base 2.
Constant Summary
- BASE =
Base binaria.
2
Instance Method Summary collapse
-
#&(word) ⇒ Word
(also: #∧)
Devuelve un and de dos palabras.
-
#+(word) ⇒ Word
Concatena dos palabras.
-
#<<(value) ⇒ Word
(also: #≪)
Desplaza bits hacia la izquierda.
-
#<=>(word) ⇒ -1, ...
Compara la palabra con otra palabra.
-
#>>(value) ⇒ Word
(also: #≫)
Desplaza bits hacia la derecha.
-
#^(value) ⇒ Word
(also: #⊻)
Devuelve un xor de dos palabras.
-
#initialize(param, size = nil) ⇒ Word
constructor
Genera una palabra.
-
#inspect ⇒ Object
Inspecciona la palabra.
-
#partition(value) ⇒ Array<Word>
Devuelve una partición de la palabra.
-
#size ⇒ Numeric
Devuelve el tamaño de la palabra.
-
#to_hex ⇒ String
Devuelve la representación del la palabra en hexadecimal.
-
#to_i ⇒ Numeric
Transforma el número en un entero.
-
#to_s ⇒ String
Transforma el número en un string.
-
#to_word ⇒ Word
Devuelve a si mismo.
-
#|(word) ⇒ Word
(also: #∨)
Devuelve un or de dos palabras.
-
#⋘(value) ⇒ Word
(also: #left_rotate)
Rota bits hacia la izquierda.
-
#⋙(value) ⇒ Word
(also: #right_rotate)
Rota bits hacia la derecha.
Constructor Details
#initialize(param, size = nil) ⇒ Word
Genera una palabra.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'src/word.rb', line 14 def initialize(param, size = nil) case param when Integer @size = size || 8 @n = param when Array @size = size || param.sum(&:size) @n = param.reverse.inject do |acu, i| i.to_word + acu end.to_i when Word @size = size || param.size @n = param.to_i end @n %= BASE**@size end |
Instance Method Details
#&(word) ⇒ Word Also known as: ∧
Devuelve un and de dos palabras.
62 63 64 |
# File 'src/word.rb', line 62 def &(word) Word.new(@n & word.to_i, @size) end |
#+(word) ⇒ Word
Concatena dos palabras.
41 42 43 |
# File 'src/word.rb', line 41 def +(word) Word.new((@n << word.size) + word.to_i, @size + word.size) end |
#<<(value) ⇒ Word Also known as: ≪
Desplaza bits hacia la izquierda.
69 70 71 |
# File 'src/word.rb', line 69 def <<(value) Word.new(@n << value.to_i, @size) end |
#<=>(word) ⇒ -1, ...
Compara la palabra con otra palabra.
133 134 135 136 137 |
# File 'src/word.rb', line 133 def <=>(word) return @size <=> word.size unless @size == word.size @n <=> word.to_i end |
#>>(value) ⇒ Word Also known as: ≫
Desplaza bits hacia la derecha.
76 77 78 |
# File 'src/word.rb', line 76 def >>(value) Word.new(@n >> value.to_i, @size) end |
#^(value) ⇒ Word Also known as: ⊻
Devuelve un xor de dos palabras.
48 49 50 |
# File 'src/word.rb', line 48 def ^(value) Word.new(@n ^ value.to_i, @size) end |
#inspect ⇒ Object
Inspecciona la palabra.
140 141 142 |
# File 'src/word.rb', line 140 def inspect to_s end |
#partition(value) ⇒ Array<Word>
Devuelve una partición de la palabra.
97 98 99 100 101 102 103 104 |
# File 'src/word.rb', line 97 def partition(value) new_size = @size / value last_index = value - 1 (0..last_index).map do |i| Word.new(@n >> (new_size * (last_index - i)), new_size) end end |
#size ⇒ Numeric
Devuelve el tamaño de la palabra.
34 35 36 |
# File 'src/word.rb', line 34 def size @size end |
#to_hex ⇒ String
Devuelve la representación del la palabra en hexadecimal.
120 121 122 |
# File 'src/word.rb', line 120 def to_hex to_i.to_s(16).rjust(@size.fdiv(4).ceil, '0') end |
#to_i ⇒ Numeric
Transforma el número en un entero.
108 109 110 |
# File 'src/word.rb', line 108 def to_i @n end |
#to_s ⇒ String
Transforma el número en un string.
114 115 116 |
# File 'src/word.rb', line 114 def to_s "0b#{@n.to_s(BASE).rjust(@size, '0')}" end |
#to_word ⇒ Word
Devuelve a si mismo.
126 127 128 |
# File 'src/word.rb', line 126 def to_word self end |
#|(word) ⇒ Word Also known as: ∨
Devuelve un or de dos palabras.
55 56 57 |
# File 'src/word.rb', line 55 def |(word) Word.new(@n | word.to_i, @size) end |
#⋘(value) ⇒ Word Also known as: left_rotate
Rota bits hacia la izquierda.
90 91 92 |
# File 'src/word.rb', line 90 def ⋘(value) self << value | self >> (@size - value) end |
#⋙(value) ⇒ Word Also known as: right_rotate
Rota bits hacia la derecha.
83 84 85 |
# File 'src/word.rb', line 83 def ⋙(value) self >> value | self << (@size - value) end |