Hola amigos, he estado liado con un código en el cual tengo un unsigned long y al que le quiero modificar un digito. Lo explico con un ejemplo. Imaginen:
unsigned long valor = 12345678;
si quiero sustituir por ejemplo el digito de las decenas de millón a partir de algún cálculo con el digito de las unidades de millar tengo que hacer muchas operaciones de divisiones., modulos., sumas., y multiplicaciones para obtener ambos dígitos y volver a montar el número. Mi pregunta es si hay algún modo más rápido usando operadores binarios o algo así.
Ahora mismo hago algo asi:
Código PHP:
#include <stdio.h>
int main (){
unsigned long valor= 12345678;
int umillar= ((valor % 10000) - (valor % 1000)) / 1000;
int dmillon = umillar - 3;
if(dmillon < 0)
dmillon += 10;
valor = dmillon * 10000000 + valor % 10000000;
printf ("%lu",valor);
return 0;
}