Unsigned

Boa tarde

Gostaria de saber se existe algo tipo unsigned em Java como em C++.

Preciso converter um código que usa variáveis do tipo
unsigned char ;

Tentei utilizar o tipo byte mas ele trabalha com as variáveis
entre -128 a +127, mas preciso trabalhar entre 0 a +255.

Se alguém tiver uma idéia eu agradeço.

Talvez short sirva:

short s1 = 0; short s2 = 255;

[quote=“jairelton”]Talvez short sirva:

short s1 = 0; short s2 = 255;[/quote]

Mas na verdade eu queria trabalhar com uma variável só. Não tem jeito?

Eu queria testar também os operadores de bits, mas pra testar com int são variáveis muito grandes (4 bytes).

Mais exatamente eu queria enteder direito a diferença entre os operadores
>> e >>>.

por exemplo um número como

1 1111111.11111111.11111111.11111101 (int x = -3)

se eu fizer int y = x >> 2 vai dar -1
mas inserindo 00 à esquerda fica
1 0011111.11111111.11111111.11111111 descartando os últimos 01

então invertendo fica
1 1100000.00000000.00000000.00000000
que dá 1.610.612.736 + 1 = 1.610.612.737
dando -1.610.612.737
neste caso eu não entendi.

se eu fizer int y = x >>> 2 vai dar 1.073.741.823
00111111.11111111.11111111.11111111 descartando os últimos 01
neste caso o valor bateu com os bits e ficou claro.

Resumindo, o que eu preciso saber é como ficam os bits depois dos operadores >> e >>> .

Se puder me dizer como ficam os bits em cada caso eu agradeço.

Cara, ou eu ou vc está enganado, o >>> nunca vi, nem nunca ouvir falar (a não ser que seja uma operação de >> + >>)

ok, >> faz nada mais nada menos que tirar o bit menos significaitivo (o mais a direita possível) e inserir um 0 na esquerda, ou seja, ele empurra todos os bits para a direita, exemplo:

10011 (inicial)
>> (sifth)
01001 (depois do primeiro sifth)
>>
00100
>>
00010
>>
00001
>>
00000

pode fazer o inverso também: (ele tira o bit mais significativo e coloca um 0 no menos significativo)
10011
<<
00110
<<
01100
<<
11000
<<
10000

essa é mais uma operação bit-a-bit

Existe sim o “>>>”
>> deslocamento de bits à direita com sinal
<< deslocamento de bits à esquerda com sinal
>>> deslocamento de bits à direita sem sinal

Da uma lida - http://www.javafree.org/javabb/viewtopic.jbb?t=6944
procura “3.3 - Deslocamento de Bits”

Não entendi. Aí são duas variáveis independentes.

[quote=“kylaeon”]
por exemplo um número como

1 1111111.11111111.11111111.11111101 (int x = -3)

se eu fizer int y = x >> 2 vai dar -1
mas inserindo 00 à esquerda fica
1 0011111.11111111.11111111.11111111 descartando os últimos 01[/quote]
Você não insere 00 à esquerda, você insere o mesmo bit do sinal (11).
1 1111111.11111111.11111111.11111111, ou seja, -1.

Invertendo e somando 1: 0 00000000.00000000.00000000.00000001

O operador >>> ignora o sinal, logo ele insere sempre zeros, independente do sinal.

[quote=“Schuenemann”][quote=“kylaeon”]
Mas na verdade eu queria trabalhar com uma variável só. Não tem jeito?
[/quote]
Não entendi. Aí são duas variáveis independentes.

[quote=“kylaeon”]
por exemplo um número como

1 1111111.11111111.11111111.11111101 (int x = -3)

se eu fizer int y = x >> 2 vai dar -1
mas inserindo 00 à esquerda fica
1 0011111.11111111.11111111.11111111 descartando os últimos 01[/quote]
Você não insere 00 à esquerda, você insere o mesmo bit do sinal (11).
1 1111111.11111111.11111111.11111111, ou seja, -1.

Invertendo e somando 1: 0 00000000.00000000.00000000.00000001

O operador >>> ignora o sinal, logo ele insere sempre zeros, independente do sinal.[/quote]

Eu queria trabalhar com uma variável só justamente pra fazer esses testes.

Entendi, então o >> insere o bit do sinal, e o >>> insere sempre zero e eu esquentando a cabeça com isso já faz 2 dias.

Agora as coisas fazem sentido.
Valeu mesmo a explicação de todos.