hexadecimal para decimal..
alguem pode me dizer pq a 0xffffffff tem representacao -1 ??
tipo eu acho q nao na vida real..mas o programa abaixo diz o contrario..nao sei se isso ocorre no processador ou se fazendo as contas o valor dele eh realmente -1.
alguem poderia me dar uma ajuda nisso????
#include <stdio.h>
int main(void){
unsigned int num = 0xffffffff;
printf("num is %d bits long\n", sizeof(num) * 8);
printf("num = %d (em decimal)\n", num);
printf("num = 0x%x\n", num);
printf("num + 1 = 0x%x\n", num + 1);
return 0;
}
hexadecimal para decimal..
kara testei aq, e oq acontece no seu programinha e q vc esta passando um numero negativo esta usando complemento de 2, os computadores usam complemento de 2 para representar numeros negativos tanto é qndo vc dá
printf("num + 1 = 0x%x\n", num + 1);
ele mostra "0" certo (-1 +1=0 - aritmetica binária hehehehe ), pelo q eu entendi me corrijam se eu estiver errado , complemento de 2 vou explicar mais ou menos porq eu nunca fui bom na facu de eletronica digital mas vai la, para se obter o complemento de 2 de um número precisa pegar esse numero em binário, inverter bit a bit e somar mais ai vc tem o complemento destes numero q é representado pelos microprocessadores e eletronica digital como a representação negativa, tanto é q pega uma HP48g da vida, ou a calculadora do kde mesmo, e testa esta conversão coloca -1 e manda converter pra hexa e ele te mostra este valor certo. espero ter ajudado qualquer coisa to na área
falow
kakaroto
hexadecimal para decimal..
blzaaa!! valeu cara...
eu perguintei a um amigo e ele respondeu o seguinte!!!
"não tenho certeza absoluta mas acho que eh isso:
como vc tem precisão finita na representação de dados, no caso dos inteiros tem um digito de sinal, acho que eles usam um sistemas de anel de inteiros módulo (mais número representável). Por exemplo o anel dos inteiros módulo 3 é
0 - 1 - 2 - 0 - 1 e assim por diante, tem uma forma de representação que usa um bit de sinal. pode ser isso"
provavelmente deve ser isso..eu achei esse programinha numa pagina!!
www.phrack.com ou www.phrack.org. eu estava lendo um txt sobre integer overflow.
se vc puder me indicar um tutorial bom sobre integer overflow fikarei grato..
faloooow
atehh+
[]'s
hexadecimal para decimal..
humm então vc quer dar um overflow na máquina??!!! heheheeh estourando a bit vai um, vc quer estourar um bit do registrador da máquina chamado carry não é isso??, para vc tentar dar um overflow na máquina e estourando a memória, ou estourar tipo assim o limite ou o tamanho da palavra por exemplo os processador 8086 usava regitradores de 16 bits se vc tentar somar um valor alto mais outro valor alto ele vai estourar os 16 bits não serão suficiente para representar o resultado ai o processador seta bit em outro registrador chamado registrador de flags o bit carry dizendo q ouve estouro, putz ja começamos a falar e de eletrônica hehehehe bom se eu estiver errado de novo me corrijam mas axo q é assim ok e oq vc disse não entendi nada, me explica oq quer fazer ok?, oq sei e oq meu professor de microprocessaores disse e q as máquinas usam este esquema de complemento de 2 pega um livro de microprocessadores e lê po, e eu te enviei um txt de como dar um overflow se não der certo me fala q te mando o arquivo ok
falow
kakaroto
hexadecimal para decimal..
consegui gerar um segmentation fault (core dumped)..com integer overflow!
;-)
[]'s
valeu...