[JAVA]Binaire getallen omzetten van postief naar negatief.

Pagina: 1
Acties:

Onderwerpen


  • pcvinnie
  • Registratie: Oktober 2009
  • Laatst online: 23-09-2012
Ik ben bezig met een script voor het omzetten van decimalen getallen naar binaire getallen zie onderstaande code.
De onderstaande code geeft al een binaire uitkomst. Maar hoe kan ik de binaire uitkomst omzetten van een positief getal naar een negatief getal bijvoorbeeld: 111001 naar 000110 (ook wel het tegenovergestelde)? :?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public int getBinaireOutput(int decimaal, int grondgetal) {
        
        int uitkomst = 0;
        int vermenigvuldiger = 1;
        
        while (decimaal != 0) {
         
            int mod = decimaal % grondgetal; 
            decimaal = decimaal / grondgetal; 

            uitkomst = uitkomst + mod * vermenigvuldiger;
            vermenigvuldiger = vermenigvuldiger * 10;     
           
        }
       
        return uitkomst;
        
    }


Ik hoop dat mijn vraag duidelijk is zo niet dan hoor ik het graag. Alvast bedankt voor de reacties.

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

Je bent je er van bewust dat een int een numerieke waarde is? en dat decimale danwel binaire representatie (omzetting naar strings, debugger etc) slechts voor mensen is?

Je maakt waarschijnlijk een denkfout ergens, in waarom je deze functie ooit nodig zou hebben. Al dit soort functies (conversie int->string met een bepaald grondgetal zitten al in je library), een een int->int functie is... krom.

Los daarvan, een negatief binair getal in twos-complement (meest voorkomende representatie) is "invert(x) + 1" (zie ook Wikipedia: Two's complement)

-niks-


  • pcvinnie
  • Registratie: Oktober 2009
  • Laatst online: 23-09-2012
Ik ben pas begonnen met Java programmeren, de bovenstaande code is eigenlijk een oefening.
Het kan inderdaad zo zijn dat ik wat krom's heb geschreven. Ik ben er helaas nog niet zo ver in. :/
Maar bedankt voor de reactie, het heeft wel mijn probleem opgelost. ;)

  • YopY
  • Registratie: September 2003
  • Laatst online: 25-04 11:37
Het 'negatief maken' van een int is niet zo moeilijk;

Java:
1
2
3
4
int positief = 1337;
int negatief = -positief;
// of
int negatief = positief * -1;


Misschien is je vraag alleen wat vaag; je hebt het over binaire getallen, maar alle getallen zijn in principe binair (je weet toch). Als je de binaire representatie wilt zien (dus 1/0 weergeven) zul je met een string oid moeten gaan werken.

Acties:
  • 0 Henk 'm!

Anoniem: 382343

De veelgebruikte methode die ik ken werkt enkel met bytes volgens mij.
Dit gaat dan als volgt (bijvoorbeeld):
byte a = 10
byte b = a xor 255

10 binair is 00001010
255 binair is 11111111
De xor functie vergelijkt iedere bit van elkaar, en stelt in principe 'als één van beiden '1' is, maar niet beiden tegelijk' (ofwel een 0 in a vergeleken met een 1 in 255 wordt een 1, en een 1 in a vergeleken met een 1 in 255 wordt een 0).

Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Voordat je over een methode gaat nadenken moet je eerst bedenken wat je wil bereiken, want een functie van int naar int die decimaal omrekent naar binair of omgekeerd is onzin. ;) Binair en decimaal zijn representaties, daar valt niets aan om te rekenen. Door met bitjes te spelen (XOR e.d.) kun je inderdaad een negatief uitrekenen, maar dat kan natuurlijk ook gewoon door er een minnetje voor te zetten...

"Omrekenen" naar decimaal impliceert dat je het getal in decimale notatie wilt zien, dus je zult het in een string moeten hebben of zo. Dat kan prima met bestaande methodes die een int naar een (decimaal) getal omzetten.

[ Voor 13% gewijzigd door bwerg op 23-09-2012 20:13 ]

Heeft geen speciale krachten en is daar erg boos over.

Pagina: 1