ForHosting KIT · Ferramentas para dev

Calculadora de zeros à esquerda

Conte os bits zero acima do bit 1 mais alto em uma palavra de largura fixa: 16 em 8 bits é 00010000, então o resultado é 3. Você também vê o comprimento em bits e o binário completo. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Valor
16
Largura
8
Você obtém
Zeros à esquerda
3
Comprimento em bits
5
Binário
00010000
Bit mais significativo
4

Contar zeros à esquerda — CLZ, LZCNT ou uma varredura derivada de BSR — é o número de bits zero que ficam acima do um mais significativo de um inteiro sem sinal numa palavra de largura fixa. Compiladores emitem essa contagem para o log2 inteiro, para normalizar um significando antes de um deslocamento e para achar o primeiro flag ativo num registrador de status. Esta calculadora de zeros à esquerda aceita um inteiro não negativo em dígitos decimais, hexadecimal com prefixo 0x, binário com 0b ou octal com 0o, mais um tamanho de palavra de oito, dezesseis, trinta e dois ou sessenta e quatro bits. Devolve a contagem CLZ, o comprimento em bits da magnitude, uma string binária preenchida na largura para você ver os zeros de cabeça, e o índice baseado em zero do bit um mais significativo quando o valor não é zero. Zero é um caso de primeira classe: todos os bits são zeros à esquerda, então a contagem iguala a largura escolhida.

O que contar zeros à esquerda significa numa palavra de largura fixa

Instruções de hardware que contam zeros à esquerda olham um registrador de largura conhecida, não um inteiro matemático abstrato. Numa palavra de oito bits o valor dezesseis é o padrão 00010000: três zeros ficam acima do um mais alto, então CLZ vale três. Numa palavra de trinta e dois bits a mesma magnitude é 00000000000000000000000000010000 e CLZ passa a vinte e sete, porque ao alargar o registrador aparecem vinte e quatro zeros altos a mais.

Algebricamente o comprimento em bits de um inteiro positivo é o piso do logaritmo na base dois do valor mais um, e a contagem de zeros à esquerda é a largura da palavra menos esse comprimento. Quando o valor é zero não existe bit um mais significativo; cada posição é um zero à esquerda, então a contagem iguala a largura.

Essa é a convenção de LZCNT no x86, CLZ no ARM, clz no RISC-V e dos builtins de compilador __builtin_clz e leadingZeroBitCount: eles informam o tamanho completo da palavra para um operando zero em vez de deixar o resultado indefinido, como às vezes faziam as codificações antigas de BSR. Esta capacidade codifica exatamente essa identidade. O campo binário preenchido tem exatamente width caracteres de zero e um sem prefixo 0b, o que torna os zeros à esquerda visíveis sem um segundo passo de conversão.

O campo formula reescreve a identidade logarítmica para que a documentação gerada e os comentários de teste citem a mesma frase que a calculadora usou.

Oráculos CLZ para compilador e máquina virtual

Confira o log2 inteiro, o lowering para LZCNT e o operando zero frente às convenções de hardware de 8/16/32/64 bits em suítes de regressão de compiladores e interpretadores.

Normalização de registradores e flags

Descubra quantos zeros altos ficam acima do bit um mais alto de uma palavra de status ou habilitação antes de deslocar um campo para uma posição canônica.

Ensino de comprimento em bits e log2

Deixe os estudantes comparar o binário preenchido à mão e as contagens CLZ para um tamanho de palavra escolhido sem rodar um simulador de CPU.

Por que preciso escolher 8, 16, 32 ou 64 bits?

CLZ é definido sobre um registrador de largura fixa. A mesma magnitude tem contagem diferente num byte de 8 bits e numa palavra de 32; o enum fechado coincide com as larguras comuns de CPU e linguagens.

O que a contagem de zeros à esquerda devolve para o zero?

A largura completa que você escolheu: 8 em uma palavra de 8 bits, 64 em uma de 64. Todos os bits do zero são zeros à esquerda, como no LZCNT do x86, no CLZ do ARM e no clz do RISC-V.

Posso digitar o número em hexadecimal ou binário?

Sim. Use dígitos decimais, hexadecimal com 0x, binário com 0b ou octal com 0o. O número é lido sem sinal e precisa caber na largura escolhida, por isso um número que precisaria de um nono bit é recusado com 8 bits.

Qual a relação entre zeros à esquerda e o logaritmo na base dois?

O comprimento em bits de um número positivo é a parte inteira do seu logaritmo na base dois mais um, e os zeros à esquerda são a largura da palavra menos esse comprimento. Para 16 em 8 bits o comprimento é 5 e o resultado, 3.

Em que posição aparece o bit mais significativo?

As posições são numeradas a partir de zero, começando pelo bit menos significativo, como é comum em programação. Por isso 16 mostra o bit mais significativo na posição 4; para o valor zero não há nenhum a indicar.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/dev/count-leading-zeros

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev/count-leading-zeros \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":"16","width":8}'
{
  "value": "16",
  "width": 8
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.count_leading_zeros",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

O que contar zeros à esquerda significa numa palavra de largura fixa

A numeração de bits do campo opcional most_significant_bit segue a convenção usual de que o bit zero é o menos significativo, de modo que dezesseis informa most_significant_bit quatro.

Contrato de entrada, larguras e comportamento de erro

Envie por POST um corpo JSON com dois campos obrigatórios. value é um inteiro não negativo escrito como string de dígitos decimais, literal hexadecimal 0x, literal binário 0b ou literal octal 0o; também se aceita um número JSON que seja um inteiro não negativo seguro, e os aliases n, integer e x apontam para o mesmo campo. width é o tamanho da palavra sem sinal e deve pertencer ao conjunto fechado oito, dezesseis, trinta e dois ou sessenta e quatro — as larguras das instruções CLZ comuns — e também é aceito como bits ou bit_width. O valor é interpretado sem sinal e deve caber nesses bits: dezesseis é legal em oito bits, duzentos e cinquenta e seis não, porque precisaria de um nono bit. Campos ausentes, strings vazias, booleanos, sinais, números fracionários, prefixos desconhecidos e um width fora do enum falham com invalid_input que nomeia a regra, e essas falhas não são cobradas. Em caso de sucesso, o corpo ecoa value como string decimal canônica sem zeros à esquerda (exceto o próprio número zero) e width como número, depois expõe leading_zeros como contagem principal, bit_length como largura da magnitude (zero quando o valor é zero) e binary como a string de bits preenchida na largura. most_significant_bit só está presente quando o valor não é zero; é omitido em vez de ir a null para a saída opcional permanecer honesta. Exemplo: value dezesseis e width oito produz leading_zeros três, bit_length cinco, binary 00010000 e most_significant_bit quatro. Exemplo: value zero e width trinta e dois produz leading_zeros trinta e dois, bit_length zero e uma string de trinta e dois caracteres zero, sem most_significant_bit.

Onde uma calculadora de zeros à esquerda mostra o valor

Autores de compiladores e máquinas virtuais emitem CLZ ou um fallback em software para o log2 inteiro, para achar o flag mais alto e para normalizar uma mantissa antes de um deslocamento no estilo de ponto flutuante; precisam de um oráculo que coincida com o hardware no zero e em cada largura suportada para que as suítes de regressão não aceitem em silêncio um erro de um na identidade logarítmica. Autores de firmware e drivers leem registradores de status e de habilitação e querem o índice do bit pendente mais alto sem escrever um auxiliar clz portátil em cada linguagem que tocam. Bibliotecas de criptografia e de inteiros grandes normalizam um limb antes de um deslocamento à esquerda ou antes de contar os bits significativos de um nonce, e uma calculadora de largura fixa é o modo mais enxuto de checar esses auxiliares contra casos de oito a sessenta e quatro bits, inclusive o limb todo zeros. Quem ensina operadores bit a bit e a normalização no estilo IEEE pode dar aos estudantes um valor e uma largura e comparar o binário preenchido à mão mais a contagem CLZ com um serviço determinístico em vez de um simulador ISA completo. Por ser parse do nível A, cada chamada bem-sucedida custa o preço-base publicado US$ 0,002 sem tokens de modelo e sem rede de saída, e a entrada inválida não consome saldo. Mantenha as solicitações pequenas, fixe leading_zeros e a string binária preenchida nos testes e você obtém resultados CLZ reproduzíveis para SDK, trechos CMS e workers na borda sem montar a própria biblioteca local de varredura de bits.

Como conto os bits zero à esquerda de um inteiro?

Envie value (decimal não negativo, 0x, 0b ou 0o) e width (8, 16, 32 ou 64). A API devolve leading_zeros = width quando value é 0; senão, width − floor(log2(value)) − 1.

O que a contagem de zeros à esquerda devolve para o zero?

leading_zeros iguala a largura escolhida e bit_length é 0. most_significant_bit é omitido porque nenhum bit está setado. Isso coincide com LZCNT, CLZ do ARM e builtins de compilador.

Posso enviar hexadecimal ou um número JSON?

Sim. value aceita dígitos decimais, hex 0x, binário 0b, octal 0o ou um inteiro JSON não negativo seguro. O valor ainda precisa caber na largura sem sinal escolhida.

Quanto custa a calculadora de zeros à esquerda?

A ferramenta do navegador é gratuita. Pedidos API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →