Pessoal gostaria de saber se estas variaveis no java são sinalizadas ou não:
int, long, short, byte, float, double… estou precisando muito muito trabalhar com estas variaveis porém elas não podem ser sinalizadas…
Agradeço a atenção e ajuda de todos!
Pessoal gostaria de saber se estas variaveis no java são sinalizadas ou não:
int, long, short, byte, float, double… estou precisando muito muito trabalhar com estas variaveis porém elas não podem ser sinalizadas…
Agradeço a atenção e ajuda de todos!
O que você quer dizer com ‘sinalizada’?
unsigned/signed ou seja:
unsigned: Aceita somente valores positivos
signed: aceita valores positivos e negativos
O único tipo "unsigned" no Java é o char, que é equivalente ao "unsigned short" (2 bytes) do C/C++.
Todos os outros tipos, incluindo byte, são "signed".
De qualquer maneira, 99% do tempo você não se precisa preocupar com isso. O restante 1% pode ser resolvido assim:
a) Para converter um byte para int ou long, de forma que ele se comporte como um "unsigned byte", você tem de fazer um "and" com o valor 0xFF:
byte ccedilha = (byte) 0x80;
int ccedilhaInt = ccedilha & 0xFF; // vai receber o valor 0x80
b) Para deslocar bits para a direita, como se o número fosse "unsigned" (ou seja, o bit mais significativo não é copiado), use o operador ">>>". Exemplo:
int java = 0xCAFE; // em bits, 1100.1010.1111.1110
int java2 = java >>> 1; // vai dar 657F, ou em bits 0110.0101.0111.1111
São signeds, pois aceitam valores positivos e negativos.
Por exemplo uma variável do tipo byte tem 8 bits, e o range vai de -128 a 127. Um short tem 16 bits e o range compreende de -32768 a +32767. E assim por diante dom int(32 bits), long(64bits), float(ponto flutuante de 32 bits) e double(ponto flutuante de 64 bits)
unsigned/signed ou seja:unsigned: Aceita somente valores positivos
signed: aceita valores positivos e negativos
Elas são sinalizadas. Você pode, como opção, utilizar o Math.abs(). Exemplo:
int number = -44557;
int positiveNumber = Math.abs(number);
System.out.println(positiveNumber);
// resultado: 44557
Eu ainda acho que o Gosling deveria ter incluído tipos “unsigned” no Java, assim como existem esses tipos em C/C++ (é claro) e em Modula-3, uma linguagem irmã do Pascal (onde o tipo é chamado de “cardinal”).
O Anders Hejslberg (um dos designers do C#, e é o fulano que criou o Delphi, o Borland C++, e o J++) incluiu tipos unsigned no C#, porque sabe que certas coisas é difícil de fazer direito se você não tiver os tipos “unsigned”.
O único tipo "unsigned" no Java é o char, que é equivalente ao "unsigned short" (2 bytes) do C/C++.
Todos os outros tipos, incluindo byte, são "signed".De qualquer maneira, 99% do tempo você não se precisa preocupar com isso. O restante 1% pode ser resolvido assim:
a) Para converter um byte para int ou long, de forma que ele se comporte como um "unsigned byte", você tem de fazer um "and" com o valor 0xFF:
byte ccedilha = (byte) 0x80; int ccedilhaInt = ccedilha & 0xFF; // vai receber o valor 0x80b) Para deslocar bits para a direita, como se o número fosse "unsigned" (ou seja, o bit mais significativo não é copiado), use o operador ">>>". Exemplo:
int java = 0xCAFE; // em bits, 1100.1010.1111.1110 int java2 = java >>> 1; // vai dar 657F, ou em bits 0110.0101.0111.1111
A thingol, boa idéia… estou trabalhando com dados e é extremamente necessário, extremamente mesmoooo que seja unsigned, agora que sei que todas são signed falei o bitwise mesmo :S:S:S
abraçossss
O byte eu naõ tinha pensado… mas, para todos os efeitos, não há unsigned variables em Java…
PS: Ficou legal essa mescla de inglês e português…
O Anders Hejslberg (um dos designers do C#, e é o fulano que criou o Delphi, o Borland C++, e o J++) incluiu tipos unsigned no C#, porque sabe que certas coisas é difícil de fazer direito se você não tiver os tipos “unsigned”.
Tirando o range de numeros que pode aumentar, eu não vejo uma usabilidade em signed variables… pelo menos eu nunca senti…
Seguinte thingol… eu consigo fazer isso…
byte menosUm = -1; //OK
byte menosDez = -10; //OK
byte menosMil = -1000 //NOK
Isso quer dizer que eu consigo ir de -254 a 254 (não lembro os valores certos), correto?!?
Rodrigo, o byte vai de -128 a +127. (Isso é difícil de explicar para quem já usou C/C++, onde um unsigned char vai de 0 até 255. )
Esquece tudo… confundi geral!!! Desculpe-me!
Não é para se desculpar. Quem é que tem de ficar lembrando esses números de cor? Só falta eu ter que decorar que o long vai de - 9.223.372.036.854.775.808 até +9.223.372.036.854.775.807. É claro que não é para fazer isso.
Pessoal, fiquei curioso.
Vocês poderiam me dar um exemplo onde o uso de unsigned variables é indispensável (ou quase)?
Grato! 
Não é para se desculpar. Quem é que tem de ficar lembrando esses números de cor? Só falta eu ter que decorar que o long vai de - 9.223.372.036.854.775.808 até +9.223.372.036.854.775.807. É claro que não é para fazer isso.
Meu erro naõ foi de numeros, e sim que vc falou do char ser unsigned e eu colocar o código do byte…
Eu ainda acho que o Gosling deveria ter incluído tipos “unsigned” no Java, assim como existem esses tipos em C/C++ (é claro) e em Modula-3, uma linguagem irmã do Pascal (onde o tipo é chamado de “cardinal”).O Anders Hejslberg (um dos designers do C#, e é o fulano que criou o Delphi, o Borland C++, e o J++) incluiu tipos unsigned no C#, porque sabe que certas coisas é difícil de fazer direito se você não tiver os tipos “unsigned”.
Tb fiquei curioso para que “tipo de coisa” é necessário o unsigned… O java tem um monte de bibliotecas que fazem as mais variadas coisas e fazem tudo isso sem unsigned…
Eu ainda acho que o Gosling deveria ter incluído tipos “unsigned” no Java, assim como existem esses tipos em C/C++ (é claro) e em Modula-3, uma linguagem irmã do Pascal (onde o tipo é chamado de “cardinal”).O Anders Hejslberg (um dos designers do C#, e é o fulano que criou o Delphi, o Borland C++, e o J++) incluiu tipos unsigned no C#, porque sabe que certas coisas é difícil de fazer direito se você não tiver os tipos “unsigned”.
Tb fiquei curioso para que “tipo de coisa” é necessário o unsigned… O java tem um monte de bibliotecas que fazem as mais variadas coisas e fazem tudo isso sem unsigned…
a questão não é biliotecas, a questão é que eu precisava retirar os bits significativos da var para fazer uma criptografica, assim sendo precisava de um var UNSIGNED, então descobri que o java não tem isso e o jeito e mexer nos bits com bitwise!
hehe entendeu? =]
agora to susse, vou ver se vai dar tudo certo esta semana!
abraços
Pessoal, fiquei curioso.Vocês poderiam me dar um exemplo onde o uso de unsigned variables é indispensável (ou quase)?
Grato!
![]()
Tem uma classe para salvar dados em um arquivo que ele pega exatamente o valor literal de uma var… quando você salvar um valor int por exemplo ele salvar até os bits significativos (que determina se é um valor positivo ou negativo)… como não me tem como assumir nada negativo consigo economizar algum espaço ao salvar o arquivo, melhorar a leitura do mesmo…
Bem básicamente não muitas funções que utilizem unsigned… mas de vez em quando é necessário… é raro!! é coisa de “escova bit” huauhahuauhahua, bricadeira, mas quase lá!
Entendi, cara!
Obrigado pela informação!