in einem int von jedem byte x subtrahieren
-
hallo leute
wie kann man in einem schritt in einem int von jedem byte z.b. 10 subtrahieren ?
hab das schon mal gewusst, aber auch wieder vergessen.weiß das jemand
Meep Meep
-

-
char* bytes=&deinInt; bytes[0]-=10; bytes[1]-=10; bytes[2]-=10; bytes[3]-=10;//edit in einem schritt?
deinInt-=168430090//edit 2
oder auch
deinInt-=10+10<<8+10<<16+10<<24
-
re
noe, meinte das anders. ist mir schon wieder eingefallen.
unsigned int x = 0x13131313; x += 0xFEFEFEFF; /* von jedem byte 1 subtrahieren */ ergebnis: x = 0x12121212;Meep Meep
-
wer brauch denn sonn scheiß?
-
klappt auch nur, wenn keins niederwertigen bytes 0 ist. die idee besteht ja wohl daran, dass übertragsproblem zu lösen, indem man versucht, grundsätzlich einen überlauf herbeizuführen. das geht aber eben nur, wenn dort nicht vorher eine 0 war. ob du nun also x+=0xfefefeff oder x-=0x01010101 schreibst, ist unerheblich. bei letzterem erkennt man imo aber eher noch, was gemeint ist...