Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

IvanR

quanto a alguns operadores do C

Recommended Posts

Este for:

 

unsigned h=0,g;
	char* c;
	for(c=s; *c!='\0'; c++)
	{
		h=(h<<4)+*c;
		if(g==(h&0xf0000000))
		{
			h^=(g>>24);
			h^=g;
		}
	}

nas linhas for(c=s; *c!='\0'; c++) ; h=(h<<4)+*c; if(g==(h&0xf0000000)); h^=(g>>24)

 

Alguém poderia me explicar oq é isso? << é um shift de memória ? Se for vai pra onde? e 0xf0000000 é o primeiro endereço da memoria ? e o h^? Oq faz isso ? Somar unsign h com um caracter ? Sinceramente, dessa parte ai num to sabendo muita coisa e obrigado a quem puder ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Shift de memória servem p/ alinhar o endereço.

Pra onde vai? Só olhar a atribuição do lado esquerdo...

 

O primeiro endereço de memória é 0x00000000.

^é operador de XOR de C.

 

Já tem erro no código porque não especifica o tipo de h nem de g,mas como é memória deve ser unsigned char. Qual o problema de se somar um char a um unsigned char? Teu teclado não emite números negativos, então está dentro do conjunto. O que querem fazer com as letras é problema de quem fez o código, já que não deve ser uma operação muito normal dar shift de 3 bytes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.