Pergunta principal: Qual é o termo exato para o menor bloco de memória endereçável?
Vou adicionar outra resposta para resolver isso de uma maneira diferente. Em hardware eletrônico, chamamos de dígito binário. Essa é uma entidade que pode representar dois valores. Geralmente pensamos em termos de 0 e 1, mas pode ser 3 ou 4, 365 ou 266, -3 ou -4, até 25 ou 37.
Qualquer sistema de sinalização pode ser usado para representar esses valores - sinalizador para cima, sinalizador para baixo, olhos abertos, olhos fechados, + 5v, -5v. Isso não é importante.
O importante é que filosoficamente estamos representando a menor quantidade distintiva de informações. Isso pode estar ativado, desativado ou verdadeiro, falso ou ativado, desativado ou 0, 1 - qualquer coisa que distinga dois estados separados. Podemos mapear esses valores para qualquer um dos sistemas de sinalização acima e muitos outros.
Agora, a pergunta é: como podemos testar e definir uma quantidade tão pequena de informações individualmente? Como eu disse na resposta anterior, o B1700 optou por abordar diretamente a menor quantidade de informações.
No entanto, a maioria das máquinas decidiu abordar apenas quantidades maiores de informações. Vamos considerar um grupo de quatro bits com um único endereço. Portanto, se obtivermos o valor de 1011 em nossa localização, como testamos o segundo bit da esquerda. Usamos uma máscara: testes 1011 e 0100 apenas no segundo bit. Então, como definimos o segundo bit como 1? Um pouco de aritmética da CPU diz que o valor será 15 ou 1111, de modo que quatro bits inteiros são gravados de volta na memória, mesmo que tenhamos realmente definido apenas um bit.
Agora isso não é útil para a maioria dos aplicativos. A maioria dos aplicativos representa dados ou informações, ativada, desativada, verdadeira, falsa, aberta, fechada.
Queremos dizer coisas como:
se aberto então ... else ... end
ou, mais provavelmente, aplicar isso a uma entidade maior:
se a porta estiver aberta então - provavelmente 'door.open' ... else ... end
'porta está aberta' ilustra endereçamento hierárquico. O endereçamento do sistema principal fornece à entidade a porta, e a porta possui seu próprio endereçamento, que dá acesso à abertura (e talvez outros atributos).
A maioria dos conjuntos também possui mais de dois valores possíveis (um conjunto com um valor nunca muda e, portanto, nem precisa de representação, portanto, zero bits). Para estes, enumeramos conjuntos, como (amarelo, verde, azul, roxo e nebuloso, vermelho). Eles definem conjuntos e tipos e o número exato de bits necessário é fornecido pelo número de valores (log2 (número de valores)).
Portanto, o endereçamento ideal depende realmente do tamanho da entidade usada no aplicativo - talvez até mesmo de entidades de tamanho variável. Mas na maioria dos hardwares, esses endereços devem ser traduzidos para o tamanho fixo definido pelo hardware. É claro que isso pode custar em termos de tempo. Também deve ser algo que um tradutor automático faz (compilador ou intérprete), não um programador, assim como esse sistema geraria código para testar e definir bits como acima (se os bits não forem diretamente endereçáveis).
Um ponto importante aqui não é pensar em termos de eletrônica - a eletrônica é apenas uma maneira muito boa e rápida de processar cálculos. Não há nada mágico na computação eletrônica que torne possível fazer cálculos que você não poderia fazer de outra maneira. A mágica está apenas na velocidade. É por isso que abstrações de baixo nível, como mecanismos de endereçamento de bits, bytes, palavras ou hardware (ponteiros) não são realmente tão úteis.