E ae galera tudo blz ???
Bom eu to com uma dúvida que pode ser simples para muitos, mais ta me confundindo para entender operadores bit a bit, como abaixo:
Citarint tem um tamenho de 16 bits e tem uma faixa mínima de -127 a 127 definido pelos padrões ANSII, ai que está a dúvida esses 16 bits variam de acordo com a quantidade de variáveis armazenadas em um tipo ... ou de acordo com os valores armazenados em uma variável, ou independente da quantidade de valores e variáveis ele sempre terá 16 bits ? ... e essa faixa mínima (-127 a 127) oque significa isso exatamente ?
aqui citei só um tipo básico ... que serve exatamente para a explicações dos demais que a dúvida procegue .. como unsigned int ... e por ai vai ... vlw :(
E aiii... blz
E assim
uma variavel depois de declarada ela ocupa um endereco de memoria.... o tamanho da memoria que ela ocupa vai ser definido no tipo da variavel....
como voce citou o int quer representa 16bit: 16^2= 256/2 = 128
entao vai do -127 ao +127....
porque vai ate o 127 se na conta ficaria do -128 ao +128? por que conta o +0 e o -0 entao fika isso awe...
Sei.. uma resposta bem diferente da pergunta... mas acho que agora voce pode responder a sua pergunta...
Citar16 bits variam de acordo com a quantidade de variáveis armazenadas em um tipo ...
isso nao existe...
bAr@O, só não entendi direito oque você disse, que eu defino o tamanho da variável em seu tipo:
Citarcomo voce citou o int quer representa 16bit: 16^2= 256/2 = 128
entao vai do -127 ao +127....
na verdade, talvez eu não tenha compreendido exatamente a msg que você quis passar com a citação a cima ... tem como usar uma linguagem mais popular que essa ? ... essa fórmula que você usou (16² = 256/2) de onde veio isso com base em que ? que tem 16 bit eu enentendi .. mais o ^2 está querendo dizer oque exatamente, que são dois tipos ?, não entendi oque ele representa, de onde veio ? não entendi direito como funciona a faixa mínima ... pra que serve ela. Tem como descobrir quantos bits totais uma variável utilizará ?
ok ok ok...
esquece aquilo...
tentarei ser mais claro...
e eu errei antes
na verdade um int de 16 bit pode conter um valor minimo de -32767 e maximo de 32767... se voce colocar um valor acima disso da estouro de memoria...
como cheguei a isso?
2^16 = 65535 /2
65535 e o numero de combinacoes possiveis, cada combinacao representa um numero...
por que o /2? Porque temos que representar os numeros negativos tambem .. :S
ok!
sobre -127 - 127, nao sei da onde que tirarm isso... ate procurei por uns 5 minutos os padroes ansi e nao achei...
ps: Que complicado da onde que vc tiro essas informacoes, pra ensina algo tao facil!
xau!
. . .
Vou responder pq eu sei como é quando vc tá aprendendo a programar.
É tenso.
Primeiro, dificilmente um int teria 16 bits, vou explicar:
um int é um WORD, que equivale a quantos bits cabem dentro de um registrador da CPU.
Um processador de 16bits, tem um inteiro de 16 bits.
Um processador de 32bits, terá um inteiro de 32bits.
Um processador de 64bits, terá um inteiro de 64bits.
Então, um int só tem 16bits se vc estiver trabalhando num 386.
Qlqr coisa mais recente, terá pelo menos 32bits.
Vc precisa TOMAR CUIDADO com esse tipo de coisa, pois quando vc trabalha com operações bit a bit, vai ter diferença de um processador para outro.
O certo então, seria você usar sizeof toda vez que vc for se referir ao 'tamanho' de um tipo.
sizeof(int) vai te retornar quantos bytes há no int no processador que você estiver exercutando o programa.
Por exemplo, se vc quiser utilizar rotacionar todos os bits para que o primeiro bit fique na última posição, vc rotacionaria num laço até sizeof(int)*8 (que te retornaria no numero de bits que há no int).
Se vc simplesmente assumisse que seu int tem 16, vc rotacionaria 16 vezes, sendo que a maioria dos processadores (que são de 32bits ou 64bits) tem int de 32 ou 64 e ae faltaria bits pra vc rotacionar.
A faixa de valor é 2^n, sendo que n é o número de bits que o tipo suporta.
Um char, que tem 8bits (1byte) tem uma faixa de 0 ~ 255.
Acontece que muitas vezes, o bit mais significativo é usado pra definir o sinal do numero.
Então a mesma sequencia de bits possui duas representações, com sinal e sem sinal.
O número 10010101 pode ser tanto -21 como 149. Como o bit mais significativo vale 1, o sinal é negativo e o resto dos bits é que dão o valor do numero.
No outro caso, o bit é considerado na hora de dar o valor ao numero.
No segundo caso, o número é que chamamos de unsigned (sem sinal) pois o valor será sempre positivo, já que não há como colocar sinal no numero (para isso, vc teria que usar o bit mais significativo)
Um tipo ocupa um numero FIXO de bits. Vc nunca vai ver um inteiro de 16 bits e um inteiro 15 bits.
O inteiro vai ser sempre 16 bits (supondo um processador de 16bits).
Não importa quantos bits vc ocupe, o resto ficará lá, sem usar, mas ficará lá.
O processador assume que vc pode usar aquele espaço e não irá mexer nele se vc não mandar.
Talvez isso de faixa mínima seja definido no ANSII para evitar que surja um inteiro de 8bits, por exemplo, fugindo do padrão original.
Mas sério, não somos professores particulares. 5 seg no google e vc encontraria uma resposta pra sua dúvida.
Mas, fica a dica, pesquise antes de vir perguntar.
Citarps: Que complicado da onde que vc tiro essas informacoes, pra ensina algo tao facil!
do livro C completo e Total que peguei no campus.
CitarMas sério, não somos professores particulares. 5 seg no google e vc encontraria uma resposta pra sua dúvida.
Mas, fica a dica, pesquise antes de vir perguntar.
Cara sua explicação foi fantástica, e sério sobre o citado acima como você pode ter percebido em minha msg que eu não sabia específicamente pelo que procurar no google .. juro que eu tentei desde de ontem, mais sem uma coisa concreta devido as dúvidas...estava complicado, por isso recorri aos Darkers. =D 8)