none
Para que serve o unsigned char?

Respostas

  • Quando você converte de char para unsigned char: Preserva-se o padrão; o bit mais significativo perde a sua função como bit de sinal.


    Fonte:Manual da Linguagem C ( Luis Fernando Espinosa Cocian )
    quarta-feira, 14 de janeiro de 2009 01:52
  • Olá William,

     

    Apenas complementando a resposta do Eduardo, tanto o char quanto o unsigned char ocupam apenas 1 (um) byte, e podem representar 256 valores diferentes (2 ^ 8).

     

    O char, por padrão, permite representar valores positivos e negativos, em um intervalo que vai de -127 até 127. Já o unsigned char, não permite armazenar valores negativos, e portanto pode representar números em um intervalo que vai de 0 até 255.

     

    Abraços,
    Caio Proiete

     


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net

    quinta-feira, 15 de janeiro de 2009 00:09
  •  William888 wrote:
    E o register char você sabe qual a função?

     

    O register diz para o compilador que a variável deve ser armazenada em um registrador da CPU, o que em algumas vezes, pode aumentar a performance de acesso à essa variável.

     

    No entanto, quem deve decidir se a variável vai ou não para um registrador é o compilador, por isso você não deve utilizar o register.

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 15 de janeiro de 2009 00:13
  • O Especificador de Classe de Armazenamento register

    O modificador register indica ao compilador que a variável em questão deve ser; se possível armazenada num registrador interno da CPU.As variáveis nos registradores da CPU são acessadas em um tempo muito menor, pois o acesso aos registradores é mais rápido que o acesso à memória. Uma consideração importante é que o especificador não pode ser usado em variáveis globais, já que isso implicaria que um registrador da CPU ficaria o tempo todo reservado para uma variável. Os tipos de dados, onde é mais apropriado o uso do especificador register, são os tipos char e int, mas pode-se usá-lo em qualquer tipo de dado.

    Code Snippet

    void main( void ){

        register int count;

        for( count = 0; count < 10; count++){
            ...
        }


    Nesse exemplo, o loop do for será executado mais rapidamente do que seria se não usássemos o especificador register. Esse é o uso mais recomendável para o register, no caso de uma variável que será usada muitas vezes de forma seguida.


    Fonte:Manual da Linguagem C ( Luis Fernando Espinosa Cocian )
    página 162

    quinta-feira, 15 de janeiro de 2009 00:34
  • Olá William,

     

    Veja alguns exemplos com os diferentes tipos, incluindo o unsigned char:

     

    Code Snippet

     

     // Número máximo que o char pode amazenar

     char numeroPequeno1 = 127;

     

     // Número máximo que o unsigned char pode amazenar

     unsigned char numeroPequeno2 = 255;

     

     // Número máximo que o short pode amazenar

     short numeroMedio1 = 32767;

     

     // Número máximo que o unsigned short pode amazenar

     unsigned short numeroMedio2 = 65535;

     

     // Número máximo que o int pode amazenar

     int numeroGrande1 = 2147483647;

     

     // Número máximo que o unsigned int pode amazenar

     unsigned int numeroGrande2 = 4294967295;

     

     // Número máximo que o long pode amazenar

     long numeroGigante1 = 9223372036854775807;

     

     // Número máximo que o unsigned long pode amazenar

     unsigned long numeroGigante2 = 18446744073709551615;

     

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quarta-feira, 21 de janeiro de 2009 16:01
  •  William888 wrote:
    Agora entendi legal Caio, muuuuuuuito obrigado!!

     

    Ótimo! ;)


    Abraços,
    Caio Proiete

     


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quarta-feira, 21 de janeiro de 2009 19:59

Todas as Respostas

  • Quando você converte de char para unsigned char: Preserva-se o padrão; o bit mais significativo perde a sua função como bit de sinal.


    Fonte:Manual da Linguagem C ( Luis Fernando Espinosa Cocian )
    quarta-feira, 14 de janeiro de 2009 01:52
  • E o register char você sabe qual a função?

     

    quarta-feira, 14 de janeiro de 2009 15:41
  • Olá William,

     

    Apenas complementando a resposta do Eduardo, tanto o char quanto o unsigned char ocupam apenas 1 (um) byte, e podem representar 256 valores diferentes (2 ^ 8).

     

    O char, por padrão, permite representar valores positivos e negativos, em um intervalo que vai de -127 até 127. Já o unsigned char, não permite armazenar valores negativos, e portanto pode representar números em um intervalo que vai de 0 até 255.

     

    Abraços,
    Caio Proiete

     


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net

    quinta-feira, 15 de janeiro de 2009 00:09
  •  William888 wrote:
    E o register char você sabe qual a função?

     

    O register diz para o compilador que a variável deve ser armazenada em um registrador da CPU, o que em algumas vezes, pode aumentar a performance de acesso à essa variável.

     

    No entanto, quem deve decidir se a variável vai ou não para um registrador é o compilador, por isso você não deve utilizar o register.

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 15 de janeiro de 2009 00:13
  • O Especificador de Classe de Armazenamento register

    O modificador register indica ao compilador que a variável em questão deve ser; se possível armazenada num registrador interno da CPU.As variáveis nos registradores da CPU são acessadas em um tempo muito menor, pois o acesso aos registradores é mais rápido que o acesso à memória. Uma consideração importante é que o especificador não pode ser usado em variáveis globais, já que isso implicaria que um registrador da CPU ficaria o tempo todo reservado para uma variável. Os tipos de dados, onde é mais apropriado o uso do especificador register, são os tipos char e int, mas pode-se usá-lo em qualquer tipo de dado.

    Code Snippet

    void main( void ){

        register int count;

        for( count = 0; count < 10; count++){
            ...
        }


    Nesse exemplo, o loop do for será executado mais rapidamente do que seria se não usássemos o especificador register. Esse é o uso mais recomendável para o register, no caso de uma variável que será usada muitas vezes de forma seguida.


    Fonte:Manual da Linguagem C ( Luis Fernando Espinosa Cocian )
    página 162

    quinta-feira, 15 de janeiro de 2009 00:34
  • Caio e Eduardo, obrigado pela ajuda!

    O register deu pra entender legal com o exemplo.

     

    Caio você pode me dar um exemplo do unsigned char?

    quarta-feira, 21 de janeiro de 2009 15:05
  • Olá William,

     

    Veja alguns exemplos com os diferentes tipos, incluindo o unsigned char:

     

    Code Snippet

     

     // Número máximo que o char pode amazenar

     char numeroPequeno1 = 127;

     

     // Número máximo que o unsigned char pode amazenar

     unsigned char numeroPequeno2 = 255;

     

     // Número máximo que o short pode amazenar

     short numeroMedio1 = 32767;

     

     // Número máximo que o unsigned short pode amazenar

     unsigned short numeroMedio2 = 65535;

     

     // Número máximo que o int pode amazenar

     int numeroGrande1 = 2147483647;

     

     // Número máximo que o unsigned int pode amazenar

     unsigned int numeroGrande2 = 4294967295;

     

     // Número máximo que o long pode amazenar

     long numeroGigante1 = 9223372036854775807;

     

     // Número máximo que o unsigned long pode amazenar

     unsigned long numeroGigante2 = 18446744073709551615;

     

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quarta-feira, 21 de janeiro de 2009 16:01
  • Agora entendi legal Caio, muuuuuuuito obrigado!!

     

    quarta-feira, 21 de janeiro de 2009 19:37
  •  William888 wrote:
    Agora entendi legal Caio, muuuuuuuito obrigado!!

     

    Ótimo! ;)


    Abraços,
    Caio Proiete

     


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quarta-feira, 21 de janeiro de 2009 19:59
  • Uma pequena correção, testes com char demonstram que na verdade o mínimo é -128 e não -127, o que faz sentido, pois são 256 valores possíveis, incluindo o zero.

    quinta-feira, 29 de novembro de 2012 00:48
  • unsigned significa sem sinal. Isso faz com que os valores sejam somente positivos.

    O tipo char aceita de -128 a 127.

    O tipo unsigned char aceita de 0 a 255.

    quinta-feira, 29 de novembro de 2012 11:48