Skip to content

Instantly share code, notes, and snippets.

@sebyx07
Last active August 29, 2015 14:01
Show Gist options
  • Save sebyx07/173a10bb80438a16a61d to your computer and use it in GitHub Desktop.
Save sebyx07/173a10bb80438a16a61d to your computer and use it in GitHub Desktop.
class ConvertBase
attr_accessor :input, :result, :binary, :flip, :addOne
def initialize input
@input = input
input = input.to_i
remain = input % 256
if remain > 128
remain = -128 + remain % 128
end
bin = convertToBinary(remain)
if (input > 128)
@flip = flipBinary
@result = addOneBinary
else
@result = @binary
end
end
def convertToBinary(_nr)
nr = _nr
if (nr < 0)
nr *= -1
end
nrStr = nr.to_s(2)
formedNr = ""
if nrStr.length < 7
t = 7 - nrStr.length
t.times do
formedNr += "0"
end
formedNr += nrStr
else
formedNr = nrStr
end
if _nr < 0
formedNr = "1" << formedNr
else
formedNr = "0" << formedNr
end
@binary = formedNr
end
def flipBinary
fl = @binary.split("")
fl.each_with_index do |c, i|
if c == '0'
fl[i] = 1
else
fl[i] = 0
end
end
fl.join
end
def addOneBinary
add = @flip.split("").reverse
add.each_with_index do |c, i|
if c != '0'
add[i] = '0'
else
add[i] = '1'
break;
end
end
add.join.reverse
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment