Hoe kan ik in C++ een waarde binair uitdrukken?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
Ik kon niet een goede rubriek vinden, maar deze kwam wat in de buurt.

Ik wil graag een waarde in C++ binair uitdrukken.
Ik doe dat nu Decimaal via %d, maar dit moet ook binair kunnen. %0x was Hexadecimaal, weet ik nog...
Op internet kon ik zo niets vinden en het zal wel een zeldzaam fenomeen zijn. ;)

Ik wil er niet een hele rekensom op los hoeven laten. Zoveel is het me niet waard. Maar om het geheel wat fancy te maken leek het me wel leuk. :)

Iemand een suggestie? _/-\o_

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 31-05 11:00

TeeDee

CQB 241

0,0 kennis van c++ maar is dit iets?

code:
1
2
unsigned char a = -58;
std::cout << std::format("{:b}", a)


Via deductie ga ik ervan uit dat je iets van een %b parameter ergens moet gebruiken

[ Voor 4% gewijzigd door TeeDee op 07-05-2024 22:25 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • +1 Henk 'm!

  • carpebios
  • Registratie: December 2008
  • Laatst online: 20:34
#include <iostream>
#include <bitset>
using namespace std;

int main() {
int decimal_value = 10; // Decimaal getal
string binary_str = bitset<4>(decimal_value).to_string();
cout << "Binaire representatie: " << binary_str << endl;
return 0;
}

https://www.geeksforgeeks...tset-and-its-application/

Dit iets?

O Zeeuws-Vlaanderen, vrijstaande woning bj.1967, enkelsteens, 180m2, 8x radiator, Tado v3+, Quatt duo, Atag ketel


Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
dank je, maar dat is overkill. ;)
Ik zoek een indicatie die ik vóór een waarde kan zetten, zodat de waarde binair wordt afgedrukt.
Bij %d wordt hij Decimaal weergegeven. Bij Hexadecimaal is dat 0x.

Zoiets zou er toch ook voor binair moeten zijn, lijkt me?

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 31-05 11:00

TeeDee

CQB 241

%b ?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 22:30

remco_k

een cassettebandje was genoeg

Recente versie van GNU C kan %b
https://stackoverflow.com/a/70993946

Maar je kan natuurlijk ook je format string opbouwen met bitwise AND (&) operators voor de bits waarin je bent geïnteresseerd.

Alles kan stuk.


Acties:
  • +1 Henk 'm!

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 23:29

SA007

Moderator Tweaking
Mis even hoe dit het meest passende forum is. MME->DEV

Acties:
  • +1 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
Helaas niet... Of ik moet een Librairy hebben gemist...
Ah, dat dus...
Ik zal me er eens in verdiepen.

[ Voor 66% gewijzigd door Fantomaz op 08-05-2024 13:50 ]


Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
Ik heb nog eens gekeken in dat artikel en het is me al wat duidelijker, hoewel ik nog niet weet wat voor Library ik nu daadwerkelijk moet invullen.

Daarbij de vraag... Ik werk met een online compiler. Dan kan ik niet een library downloaden, lijkt mij.
Kan ik in die situatie wel zo'n library gebruiken??

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom wil je in hemelsnaam een library gebruiken voor iets wat in een functie van een handvol regels gedaan kan worden :?
Dan gebruik je gewoon %s en roep je de functie aan met je waarde.

[ Voor 26% gewijzigd door RobIII op 08-05-2024 21:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 28-05 16:11
Fantomaz schreef op woensdag 8 mei 2024 @ 20:56:
Ik heb nog eens gekeken in dat artikel en het is me al wat duidelijker, hoewel ik nog niet weet wat voor Library ik nu daadwerkelijk moet invullen.

Daarbij de vraag... Ik werk met een online compiler. Dan kan ik niet een library downloaden, lijkt mij.
Kan ik in die situatie wel zo'n library gebruiken??
Het is een library, maar wel eentje die je wss toch al gebruikt, nl de standaard C library. Als je de mogelijkheid hebt om met -std=c23 of -std=c2x te compilen zou je het eens kunnen proberem.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
farlane schreef op woensdag 8 mei 2024 @ 22:50:
[...]

Het is een library, maar wel eentje die je wss toch al gebruikt, nl de standaard C library. Als je de mogelijkheid hebt om met -std=c23 of -std=c2x te compilen zou je het eens kunnen proberem.
Ik waardeer je input, maar ik begrijp het niet.
Ik gebruik C++ in een online GDB compile programma.
Maar daar kan ik geen code vinden die simpelweg (bv) 18 omzet naar 00010010
Ik kan wel iets in Hex weergeven (0x12) maar niet binair.

Het is geen hoofdzaak hoor. Het ging om een simpel programmaatje, waarin ik een weergave wat wilde opleuken/verduidelijken door waardes binair weer te geven.
Zónder dat het programma an sich er te complex door werd.

In PICbasic kon je dat gemakkelijk weergeven. Ik had gehoopt dat dat ook zo kon met C of (C++)

Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 22:30

remco_k

een cassettebandje was genoeg

Ter idee, Ik zal mezelf nog ff quoten, misschien had je dit gemist:
remco_k schreef op dinsdag 7 mei 2024 @ 22:48:
...
Maar je kan natuurlijk ook je format string opbouwen met bitwise AND (&) operators voor de bits waarin je bent geïnteresseerd.
Dan voor elke bit b.v. %d doen:
"%d%d%d%d%d%d%d%d"
Met 8 bitwise AND parameters erachter voor 128, 64, 32, 16, 8, 4, 2 en 1. Dan krijg je volgens mij de output die je zoekt.

Info..

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 28-05 16:11
Fantomaz schreef op donderdag 9 mei 2024 @ 20:43:
[...]
Ik waardeer je input, maar ik begrijp het niet.
Als die online omgeving C23/C2x ondersteunt (een vrij nieuwe C standaard) dan zou het kunnen dat ook die online omgeving de %b format specifier heeft die precies doet wat je wil.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
bedankt voor de input zover, Mensen.
Ik heb het even op de lange baan gedrukt. ivm andere drukte.

Acties:
  • +1 Henk 'm!

  • dogtagz
  • Registratie: December 2014
  • Laatst online: 31-05 16:39
https://en.cppreference.com/w/cpp/io/manip/hex


cppreference is een van de beste websites om deze info te zoeken.

code:
1
2
3
4
5
// Note: there is no I/O manipulator that sets up a stream to print out
// numbers in binary format (e.g. bin). If binary output is necessary
// the std::bitset trick can be used:

std::cout << "The number 42 in binary:  " << std::bitset<8>{42} << '\n';

$ alias cd='rm -rf'


Acties:
  • +1 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 31-05 15:56
Vanaf gnuc 2.35 kun je dit eenvoudig doen door terug te grijpen naar C, als je compiler recent genoeg is (>2022) kan dat vanzelf.
code:
1
2
printf("%#016b", 0x0055);
0b00000001010101


Voor de C++ feature moet je een extra lib toevoegen, en dus de compiler vertellen zijn standaard te verhogen.
-std=c++20 of voor msvc /std:c++20, hoewel je dat online niet kan testen.

Voorbeeld met gcc: https://godbolt.org/z/b3efq15nf

[ Voor 8% gewijzigd door jeroen3 op 20-05-2024 14:01 ]

Pagina: 1