Sunday 26 November 2017

Opções binárias de rotação esquerda


Eu escrevi este pequeno código em C: Im esperando para binário leftrotate um número inteiro, o que significa que estou esperando para mover todos os bits do deslocamento dado para a esquerda e boucling se o número é muito grande. Por exemplo, quando eu inserir: Im esperando como retorno: (Observe que o hexadecimal a no início é agora no final, porque eu escolho offset 4 neste exemplo particular) Mas em vez disso, eu tenho: Qualquer idéia de onde pode vir ou O que estou fazendo errado Estou usando o int correto. Devo usar uint em vez disso. Ou talvez char Será que depende da arquitetura do meu computador (32 bits ou 64 bits), eu acho que depende do comprimento do inteiro (thats por que estou usando um número de comprimento de 32 bits) Sua implementação definida se uma mudança de direito é uma aritmética Ou uma mudança lógica. No seu caso, parece ser uma mudança aritmética, então você está obtendo extensão sinal na metade gtgt de sua expressão. Você precisa colocar um elenco ou atribuição não assinada para obter o comportamento desejado. Todas as idéias de onde pode vir ou o que estou fazendo errado Sign-extensão devido à direita deslocando um valor assinado. Estou usando o int correto devo usar uint em vez disso. Ou talvez char mudar para unsigned int em sua assinatura de função pode ser o mais fácil, sim. Isso depende da arquitetura do meu computador (32 bits ou 64 bits) Não, provavelmente não. Eu acho que depende do comprimento do inteiro (é por isso que estou usando um número de comprimento de 32 bits) Não, provavelmente não. Você poderia fazer seu programa não dependem do tamanho do inteiro, embora:

No comments:

Post a Comment