bitlogische operation
-
hallo,
#include <iostream> #include <string> int main() { unsigned int a = 32; int subnetmask = 4; a = (a >> (8 - subnetmask)); unsigned int b = a = (a << (8 - subnetmask)); std::cout << "von: " << a << std::endl << std::endl; a = 0; a = ~a; a = (a >> (32 - (8 - subnetmask))); std::cout << "bis: " << a + b << std::endl << std::endl; return 0; }
a = 0; a = ~a; a = (a >> (32 - (8 - subnetmask)));
ich habe in meinem programm eine unsigned int variable namens subnetmask.
diese variable besagt wie viele bits (von rechts gelesen) den wert 1 ausweisen sollten. dh. subnetmask = 4 -> 0000 1111
die obigen 3 zeilen im codeschnipsel bewerkstelligen dies, es funktioniert auch wunderbar jedoch nur auf 32 bit kisten. die mangelnde portabilität möchte ich ausmerzen und dazu frag ich euch wie man mein problem short and simple lösen könnte.gruß xerxes
-
int hat 32bit aber NUR auf den besagten '32bit-kisten', nutze doch short oder so
-
long hat immer MINDESTENS 32Bit laut ISO.
-
hallo,
ich habs jetzt mit unsigned char gelöst. funktioniert wonderful
es wäre eigentlich denkbar, alle variablen mit dem datentyp unsigned char zu deklarieren, das spart ungemein platz im stackgruß xerxes