Page 1 of 1

B1NARY

Posted: Sat Mar 05, 2011 12:07 am
by TheDuck
Teiän tälläsen pienen ohjelman aikani kuluksi selventämään IRL-ystävälleni binäärilukujärjestelmää. Ohjelma siis muuttaa luvun väliltä 0-8191 binääriluvuksi. Sorsat tulee mukana.
binary.zip
(589.15 KiB) Downloaded 236 times

Re: B1NARY

Posted: Sat Mar 05, 2011 3:48 am
by MaGetzUb
Teeppä vielä Binääriset And, Not, Or ja Xor.. =)

Re: B1NARY

Posted: Wed Mar 09, 2011 8:26 pm
by Misthema
MaGetzUb wrote:Teeppä vielä Binääriset And, Not, Or ja Xor.. =)

Code: Select all

Function BinAND(bit1, bit2)
        If(bit1=1 And bit2=1) Then Return 1: Return 0
End Function

Function BinOR(bit1, bit2)
        If(bit1=1 Or bit2=1) Then Return 1: Return 0
End Function

Function BinXOR(bit1, bit2)
    If(bit1=1)
        If(bit2=0) Then Return 1 : Return 0
    Else
        If(bit2=1) Then Return 1 : Return 0
    EndIf
End Function

'AND
Print "BinAND()"
Print BinAND(0,0)
Print BinAND(1,0)
Print BinAND(0,1)
Print BinAND(1,1)

'OR
Print "BinOR()"
Print BinOR(0,0)
Print BinOR(1,0)
Print BinOR(0,1)
Print BinOR(1,1)

'XOR
Print "BinXOR()"
Print BinXOR(0,0)
Print BinXOR(1,0)
Print BinXOR(0,1)
Print BinXOR(1,1)
WaitKey
End

Re: B1NARY

Posted: Wed Mar 09, 2011 8:37 pm
by Koodiapina
Misthema wrote:
MaGetzUb wrote:Teeppä vielä Binääriset And, Not, Or ja Xor.. =)

Code: Select all

Function BinAND(bit1, bit2)
        If(bit1=1 And bit2=1) Then Return 1: Return 0
End Function

Function BinOR(bit1, bit2)
        If(bit1=1 Or bit2=1) Then Return 1: Return 0
End Function

Function BinXOR(bit1, bit2)
    If(bit1=1)
        If(bit2=0) Then Return 1 : Return 0
    Else
        If(bit2=1) Then Return 1 : Return 0
    EndIf
End Function

'AND
Print "BinAND()"
Print BinAND(0,0)
Print BinAND(1,0)
Print BinAND(0,1)
Print BinAND(1,1)

'OR
Print "BinOR()"
Print BinOR(0,0)
Print BinOR(1,0)
Print BinOR(0,1)
Print BinOR(1,1)

'XOR
Print "BinXOR()"
Print BinXOR(0,0)
Print BinXOR(1,0)
Print BinXOR(0,1)
Print BinXOR(1,1)
WaitKey
End

Code: Select all

Function BinAND(bit1, bit2)
		Return bit1 And bit2
End Function

Function BinOR(bit1, bit2)
		Return bit1 Or bit2
End Function

Function BinXOR(bit1, bit2)
	Return bit1 Xor bit2
End Function
Nopeinta on tietenkin olla käyttämättä erillisiä funktioita.

Re: B1NARY

Posted: Wed Mar 09, 2011 9:04 pm
by MaGetzUb
Tarkoitin, että ne tulisi tuohon ohjelmaan.

Re: B1NARY

Posted: Wed Mar 09, 2011 9:09 pm
by Misthema
Grandi wrote:

Code: Select all

...
Nopeinta on tietenkin olla käyttämättä erillisiä funktioita.
No niin tietysti. En muistanut että CB osaa tehdä asiat yksinkertaisestikin. =)

EDIT:

Tässä vielä NOT mukana.

Code: Select all

Function BinAND(bit1, bit2)
		Return bit1 And bit2
End Function

Function BinOR(bit1, bit2)
		Return bit1 Or bit2
End Function

Function BinXOR(bit1, bit2)
	Return bit1 Xor bit2
End Function

Function BinNOT(bit)
    Return bit = Not bit
End Function

'NOT
Print "BinNOT()"
Print BinNOT(0)
Print BinNOT(1)

'AND
Print "BinAND()"
Print BinAND(0,0)
Print BinAND(1,0)
Print BinAND(0,1)
Print BinAND(1,1)

'OR
Print "BinOR()"
Print BinOR(0,0)
Print BinOR(1,0)
Print BinOR(0,1)
Print BinOR(1,1)

'XOR
Print "BinXOR()"
Print BinXOR(0,0)
Print BinXOR(1,0)
Print BinXOR(0,1)
Print BinXOR(1,1)
WaitKey
End
[/edit]

Re: B1NARY

Posted: Wed Mar 09, 2011 9:39 pm
by Koodiapina
Misthema wrote:
EDIT:

Tässä vielä NOT mukana.

Code: Select all

Function BinNOT(bit)
    Return bit = Not bit
End Function
// *naps*
'NOT
Print "BinNOT()"
Print BinNOT(0)
Print BinNOT(1)
// *naps*
WaitKey
End
[/edit]
Ja tässä taas vähän optimoidumpi versio:

Code: Select all

Function BinNOT(bit)
    Return Not bit
End Function
Mutta joo, kuten jo sanoin, niin aika hupsuahan se on CB:n valmista toteutusta ruveta wrapperoimaan.

Re: B1NARY

Posted: Wed Mar 09, 2011 9:56 pm
by valscion
Sitten tässä on vielä Bagardin joskus tekemät ihan kokonaisluvuille toimivat kunnon binäärioperaatiot.

Code: Select all

//===============================================================================
// Binäärioperaatioita (by Bagard)
//===============================================================================
Function BinAnd(luku1, luku2)
    For i = 0 To 31
        luku3 = luku3 + (((luku1 Shr i) Mod 2) And ((luku2 Shr i) Mod 2)) Shl i
    Next i
    Return luku3
End Function
 
Function BinNot(luku1)
    For i = 0 To 31
        luku3 = luku3 + (Not ((luku1 Shr i) Mod 2)) Shl i
    Next i
    Return luku3
End Function
 
Function BinXor(luku1, luku2)
    For i = 0 To 31
        luku3 = luku3 + (((luku1 Shr i) Mod 2) Xor ((luku2 Shr i) Mod 2)) Shl i
    Next i
    Return luku3
End Function
 
Function BinOr(luku1, luku2)
    For i = 0 To 31
        luku3 = luku3 + (((luku1 Shr i) Mod 2) Or ((luku2 Shr i) Mod 2)) Shl i
    Next i
    Return luku3
End Function
Että esimerkiksi

Code: Select all

11001010
01101011
BinOr
11101011
EDIT: Huvitti tehä vähän lisää esimerkkejä :P

Code: Select all

11011010
10110011
BinXor
01101001
--------
11000101
10000111
BinAnd
10000101
--------
11110001
BinNot
00001110