Tuesday, 24 April 2018

Opções de máscara binária


Opções de máscara binária
Obter através da App Store Leia esta publicação em nosso aplicativo!
Usando uma máscara de bits em C #
Digamos que eu tenho o seguinte.
e eu passo 10 (8 + 2) como um parâmetro para um método e eu quero decodificar isso para significar susan e karen.
Eu sei que 10 é 1010.
mas como posso fazer alguma lógica para ver se um bit específico é verificado como em.
Agora, tudo o que posso pensar é verificar se o número que eu passei é.
Quando eu tenho um número maior de bits reais no meu cenário do mundo real, isso parece impraticável, o que é melhor usar uma máscara para verificar se eu atende ou não a condição de apenas karen?
Posso pensar em mudar para a esquerda, em seguida, em seguida, mudando para a direita, em seguida, de volta para limpar bits além do que eu estou interessado, mas isso também parece excessivamente complexo.
A maneira tradicional de fazer isso é usar o atributo Flags em um enum:
Então você verificaria um nome específico da seguinte forma:
As combinações lógicas bit a bit podem ser difíceis de lembrar, então eu faço a vida mais fácil comigo com uma classe FlagsHelper *:
Isso me permitiria reescrever o código acima como:
Observe que eu também poderia adicionar Karen ao conjunto, fazendo isso:
E eu poderia remover Susan de forma semelhante:
* Como Porges apontou, um equivalente do método IsSet acima já existe em 4.0: Enum. HasFlag. Os métodos Set e Unset não parecem ter equivalentes, no entanto; então eu ainda diria que essa classe tem algum mérito.
Nota: Usar enums é apenas a maneira convencional de enfrentar esse problema. Você pode traduzir totalmente o código acima para usar ints e funcionará também.
O bitwise 'e' irá mascarar tudo, exceto o bit que "representa" Karen. Enquanto cada pessoa for representada por uma única posição de bit, você pode verificar várias pessoas com um simples:
Incluí um exemplo aqui que demonstra como você pode armazenar a máscara em uma coluna de banco de dados como um int e como você reativaria a máscara mais tarde:
Para combinar máscaras de bits que você deseja usar bitwise ou. No caso trivial em que cada valor que você combina tem exatamente 1 bit (como seu exemplo), é equivalente a adicioná-los. Se você tem bits sobrepostos, no entanto, ou eles manipulam o caso graciosamente.
Para decodificar as máscaras de bits, você e seu valor com uma máscara, assim:
Um outro motivo muito bom para usar uma máscara de bits versus bools individuais é como um desenvolvedor web, ao integrar um site para outro, freqüentemente precisamos enviar parâmetros ou sinalizadores na querystring. Enquanto todas as suas bandeiras forem binárias, torna muito mais simples usar um único valor como uma máscara de bits do que enviar vários valores como bools. Eu sei que, de outra forma, é possível enviar dados (GET, POST, etc.), mas um parâmetro simples na querystring é a maior parte do tempo suficiente para itens não sensíveis. Tente enviar 128 valores de bool numa querystring para se comunicar com um site externo. Isso também oferece a capacidade adicional de não empurrar o limite de URLs de consulta nos navegadores.

Opções de máscara binária
Obter através da App Store Leia esta publicação em nosso aplicativo!
SQL Server: varbinary ou int para armazenar uma máscara de bit?
Existe alguma vantagem de usar o int vs varbinary para armazenar máscaras de bits em termos de desempenho ou flexibilidade.
Para meus propósitos, sempre estarei fazendo lições nessas máscaras de bits (sem gravações ou atualizações).
Você definitivamente deve usar um INT (se você precisar de 32 bandeiras) ou BIGINT (para 64 bandeiras). Se você precisar de mais bandeiras, pode usar BINARY (mas provavelmente também deve se perguntar por que você precisa de tantas bandeiras em seu aplicativo).
Além disso, se você usar um tipo integral, você pode usar operadores padrão bit a bit diretamente sem converter uma matriz de bytes para um tipo integral.
Se você precisar de mais bandeiras e tiver que usar o BINARY você perde suporte nativo para operadores bitwise e, portanto, suporte fácil para verificar os valores da bandeira. Eu provavelmente vou mudar a verificação de valores de bandeira para um aplicativo cliente, mas se você estiver confortável na programação em T-SQL, isso também é uma opção. Se você estiver usando C # você possui uma classe BitArray com as operações necessárias e em Java você possui uma classe BitSet.
Geralmente, é considerado preferível usar um monte de colunas de bits em vez de uma máscara de bit. Eles serão embalados juntos na página, então eles não vão demorar mais espaço. Embora eu também pareça sempre ir com uma coluna int ou bigint para evitar todo o tipo de letra da coluna ... mas com intellisense provavelmente irei com as colunas de bits.
Bem, considerando um int tem menos espaço de armazenamento e geralmente é um pouco mais fácil de trabalhar Não tenho certeza por que você usaria um varbinary.
Eu costumo concordar com a resposta do hainstech de usar campos de bits, porque você pode nomear explicitamente cada campo de bits para indicar o que deve armazenar. No entanto, não vi uma abordagem prática para fazer comparações de bitmask com campos de bits. Com os operadores bitwise do SQL Server (& amp ;, |, etc.), é fácil descobrir se um intervalo de sinalizadores está configurado. Muito mais trabalho para fazer isso com operadores de igualdade contra um grande número de campos de bits.

Toppan Photomasks, Inc.
Máscaras binárias padrão.
As fotomassas binárias padrão continuam sendo nosso produto mais amplamente utilizado. Apesar da tendência para opções de fotomask mais avançadas, como máscaras OPC, máscaras de deslocamento de fase e OMOG, aproximadamente 70% de nossos clientes de fotomask continuam a usar nossos produtos binários para todas as suas necessidades de fabricação.
A Família do Photomask Binário.
As fotomassas binárias estão disponíveis com especificações que podem ser totalmente personalizadas para atender às suas necessidades específicas. Alguns dos nossos tamanhos e conjuntos de especificações mais comuns estão listados abaixo.
Fabricação de fotomassas binárias.
Aproveitamos nossa Rede Global de Manufatura para construir e entregar suas fotomáquias praticamente em qualquer lugar. À medida que as empresas separaram seus grupos de design de seus grupos de fabricação, a Toppan se concentrou em fornecer opções flexíveis para lhe proporcionar a melhor experiência possível. Nós temos mais do que apenas a flexibilidade e a experiência para serem enviadas local, regionalmente e internacionalmente. Nossa rede global também nos permite trabalhar em estreita colaboração com o designer e o fabricante, independentemente do seu alcance.
Temos mais de 100 anos de legado de impressão e nós construímos nossa reputação um cliente por vez. Nós mantemos nosso foco em você, porque nosso sucesso está ligado ao seu.
Máscaras binárias padrão fabricadas em:
+ Photomasks.
+ IC Packaging.
+ Filtros de cores On-Chip.
+ Filmes.
&cópia de; 1995 - 2018 Toppan Photomasks. Todos os direitos reservados.

Números binários e máscaras de sub-rede.
Gary C. Kessler.
Uma versão editada deste artigo apareceu como uma barra lateral para o artigo "Hanging Out With the Classless Crowd" de W. Heldman, com o título "Números binários e máscaras de sub-rede" no Windows 2000 Magazine, janeiro de 2001.
Para entender verdadeiramente como derivar as máscaras de IP e aplicá-las aos endereços, você deve entender os números binários e como convertê-los em decimal.
Vamos começar com algo com o qual todos estamos bastante confortáveis, ou seja, números decimais (base 10). Quando éramos crianças, nos ensinaram que cada dígito num número decimal representava um poder diferente de 10. O número 7836, por exemplo, é interpretado da seguinte maneira:
Agora, isso é bastante simplista, admito, mas entender isso é a base para a compreensão de qualquer base numérica. Em particular, isso nos ajudará a entender o binário (base 2).
Interpretamos números binários exatamente da mesma forma que os números decimais, exceto que cada coluna de um número binário representa um poder diferente de 2 em vez de 10. Podemos converter facilmente um número binário para um valor decimal mais compreensível. Vamos primeiro analisar os poderes de 2 (só vamos chegar o que precisamos para um byte de 8 bits porque os endereços IP têm bytes de 8 bits).
Dada esta informação, podemos converter o número binário 11010011 para decimal da seguinte forma.
Agora, podemos aplicar o que sabemos sobre números binários para endereços IP e máscaras de sub-rede. Os endereços IP são 32 bits, ou quatro bytes de 8 bits, de comprimento. Enquanto o computador armazena o endereço IP em binário, normalmente usamos notação decimal pontilhada para escrever endereços porque achamos mais fácil de ler. A notação decimal pontilhada nos permite examinar um endereço IP de um byte por vez. Em endereços "classful" padrão, os endereços Classe A dedicam 1 byte à ID da rede e 3 bytes à ID do host, os endereços da Classe B dedicam 2 bytes à ID da rede e 2 bytes ao ID do host e os endereços Classe C dedicam 3 bytes para a ID da rede e 1 byte para o ID do host.
A finalidade de uma máscara de sub-rede é fornecer IP, protocolos de roteamento e qualquer outro software que tenha que lidar com endereços com uma maneira pela qual o NET_ID e HOST_ID podem ser determinados. As máscaras de sub-rede, como o próprio endereço IP, têm 32 bits de comprimento. As máscaras de sub-rede são compostas por um número de 1 bits seguido de 0 bits suficientes para formar um valor de 32 bits, onde as posições de bit com um 1 correspondem às posições de bit no endereço IP que fazem parte do NET_ID. Com o endereço de classe, então, a máscara de sub-rede terá 8, 16 ou 24 bits para os endereços Classe A, B e C, respectivamente. Na linguagem do mascaramento de sub-rede, essas máscaras seriam de 8, 16 ou 24 bits de comprimento, mas isso é um nome incorreto; Realmente só se refere ao número se um bits, já que as máscaras realmente têm 32 bits de comprimento.
O mascaramento de sub-rede de comprimento variável (VLSM) é essencial para suportar o endereçamento sem classe. O VLSM nos permite construir máscaras que são praticamente qualquer comprimento e não estão restritas aos limites de bytes do endereçamento classico. Nessa maneira, podemos agregar muitos NET_IDs em uma única entrada em uma tabela de roteamento ou podemos segmentar um endereço Classe C, por exemplo, em várias subadjustas.
Vamos começar com um exemplo simples. Suponhamos que possamos ter o endereço Classe C 192.168.18.55 com a máscara de sub-classe Classe C convencional 255.255.255.0. Em binário, o endereço (com espaços inseridos para legibilidade) é:
11000000 10101000 00010010 00110111.
e a máscara é.
11111111 11111111 11111111 00000000.
É fácil para nós analisar isso por exame e ver que os bytes de todos se referem à parte de identificação de rede do endereço e podemos ver que o NET_ID é 192.168.18 (o que, de qualquer maneira, sabíamos de qualquer maneira porque os três primeiros bytes de uma Classe C são o NET_ID). Na notação VLSM e Routing Classless Inter-Domain (CIDR), a máscara seria referida como a / 24 ("slash-24"), pois existem 24 bits na máscara.
Mas como isso realmente funciona? Quando o software precisa determinar a parte NET_ID deste endereço (para fins de roteamento, por exemplo), a máscara de sub-rede de 32 bits é logicamente AND com o endereço de 32 bits, sendo o resultado que qualquer bit de endereço correspondente a um bit de 1 bit na máscara de sub-rede mantém seu valor (0 ou 1) e qualquer bit de endereço correspondente com um bit de 0 na máscara de sub-rede é forçado a 0. Então, vamos realizar essa operação para o endereço e a máscara de Classe C acima:
Depois de executar esse cálculo, o software agora sabe que o NET_ID é 192.168.18.0.
Vamos agora tentar um exemplo mais amplo. Uma vez que as máscaras são criadas escrevendo algum número seguido de zero, um byte de todos os elementos terá o valor 255 e um byte de todos os zeros terá um valor de 0, como mostrado acima. Mas um VLSM pode não ter uma máscara que cai em um limite de bytes para que um dos bytes possa ter um valor diferente de 0 ou 255. De fato, um byte de 8 bits tem apenas oito possíveis valores de sub-rede à medida que aumentamos o número de um bits da esquerda:
As máscaras de sub-rede de bit variável nos dão uma grande flexibilidade na criação de várias sub-redes dentro do espaço da Classe C. Suponha que queremos criar oito sub-redes no espaço de endereço 192.168.18.0. Nós apenas adicionamos 3 bits ao comprimento da máscara de sub-rede de 24 bits. Por que 3 bits? Porque 2 3 = 8.
Então, agora temos uma máscara de sub-rede / 27 ou 255.255.255.224. Lembre-se de que os primeiros 24 bits são todos, então os três primeiros bytes serão 255. O quarto byte terá 3 neles e, portanto, um valor de 224 na tabela acima.
Como usamos 3 bits do byte final como uma máscara (às vezes chamado de ID de sub-rede), os IDs do host são limitados a 5 bits. Assim, cada sub-rede é limitada a 2 5 = 32 hosts. (Na verdade, cada sub-rede neste exemplo é limitada a 30 hosts, o HOST_ID de todos os zero nunca é atribuído a um host, pois ele é usado como o espaço reservado 0 para o número de rede e o HOST_ID é reservado como transmissão da sub-rede endereço.)
Mas ainda temos um problema mais significativo a resolver, ou seja, identificar os números de sub-rede. Usar a máscara / 27 realmente nos dá oito sub-redes, mas também precisamos conhecer seus números se formos a construir um diagrama de rede ou uma tabela de roteamento. Os oito valores possíveis da máscara de sub-rede de 3 bits são:
Portanto, os oito possíveis valores do byte de endereço final são (novamente, os espaços são apenas para legibilidade):
Então, temos nossos 8 NET_IDs que podem ser usados ​​para fins de roteamento:
Por razões óbvias, você sempre deve indicar a máscara de sub-rede juntamente com o próprio endereço, como eu fiz acima, para evitar a ambiguidade; O endereço 192.168.18.128, por exemplo, é um endereço válido que pode ser usado com uma máscara de sub-rede / 25, / 26, / 27, / 28, / 29 ou / 30.

toco.
Apenas outro blog do WordPress.
Pós-navegação.
Um Quick Bitmask HOWTO para programadores.
Atenção: o material Highly Geeky segue.
Atualmente, estou trabalhando em um grande banco de dados para um cliente. Atualmente, eu realmente estou fazendo uma nova versão do banco de dados em uma máquina de gritar normalizada. Eu encontrei um problema recentemente em que alguns dos valores são armazenados como bitmasks. Eu sabia o que era uma máscara de bits, mas geralmente os considerava como magia vudu deixada para hackers loucos de C. Até agora. Eu entrei em contato com meu mentor do hacker louco do Voodoo, Jeremy Brand, e perguntei como eles trabalhavam.
Aqui é um rápido tutorial:
em vez de contar 0, 1, 2, 3, 4, 5 e # 8230; você poderia com poderes de 2.
Quando você faz uma coisa com um desses poderes de dois, você pode.
adicione-os a outros poderes de 2 e, em seguida, divida o que.
você começou com novamente.
A soma de seus identificadores é 7 (vamos chamar este $ soma).
Então, mais tarde você pode verificar 7 para ver o que está em sua cesta:
$ sum mod 4 igual a 0? (então não há maçã no carrinho)
o $ sum mod 2 equivale a 0? (então não há laranja no carrinho)
o $ sum mod 1 email 0? (então não há banana no carrinho)
Usar bitmasmas não é mais fácil de usar, mas é rápido.
É rápido porque os computadores já são em bits. Este exemplo.
está usando memória de 3 bits. Normalmente, você terá 16 opções (como eu.
tem 3 aqui) por causa do tamanho de um número inteiro. Se você é sortudo.
você estará usando C ou mesmo o mysql que pode acessar todos os 32 bits de um.
inteiro, você terá 32 opções.
A razão pela qual os computadores usam base-2 para começar são porque.
Com o hardware de armazenamento, há realmente apenas dois estados: ligado e desligado.
As unidades mais simples que você pode armazenar e desligar mais.
armazenamento que o dispositivo pode ter.
FYI, você pode usar o google para sua calculadora:
Finalmente, isso faz sentido. Ainda estou completamente perdido na matemática real que faz isso funcionar (o que me irrita), mas consegui obter um programa de prova de conceito funcionando, o que pode ajudar outros programadores deficientes em bitmask lá fora:
O truque é o & amp ;. Se o resultado for 0 (zero), o valor da máscara de bits única não está presente na soma da máscara de bits. Tenho certeza de que isso tem algo com o fato de que você não pode adicionar nenhuma lista separada de valores de máscara de bits e obter a mesma soma duas vezes (ou seja, 1 + 2 + 4 = 7, 2 + 4 + 8 = 14). Mais uma vez, eu só sei # 8220; funciona [tm] & ​​# 8221 ;. Espero que isso ajude alguém a lá.
Eu principalmente escondiendo isso aqui, então a próxima vez que minha mente retardada pode se enrolar em torno de máscaras de bits, eu posso verificar novamente em meu próprio site. Se você tiver dúvidas sobre este não envie um e-mail para mim, porque eu ainda acho que pequenos homens verdes fazem esse truque matemático & # 8220; # 8221; trabalhos. Porra, eu gostaria de obter um diploma de Ciência da Computação em vez de uma Informação de Computador. Sys. grau.
16 pensamentos sobre & ldquo; Um Quick Bitmask HOWTO para Programmers & rdquo;
Finalmente! Eu vi isso muitas vezes, mas não consegui descobrir o nome, obrigado.
Você ajudou pelo menos um codificador deficiente em bitmask 🙂
Eu não posso acreditar nos tipos de pessoas que se chamam programadores nos dias de hoje. E os gerentes não conhecem; para eles, qualquer um que possa jogar algumas palavras-chave arrumadas deve saber o que eles estão fazendo. E, portanto, a quantidade irresistível de sistemas de software de amaldiçoamento, de qualidade inferior, com documentação fraca e design ainda pior. Você senhor, é um idiota, e eu odeio seu tipo.
Você não tem IDEA que tipo de programador eu sou. Antes de tirar a boca, você provavelmente deveria tomar o tempo para me conhecer. Só porque eu não sabia o que era uma máscara de bits (ou como usá-la efetivamente) não significa que eu não sou bom com SQL, OOP, etc. Pelo menos eu entendi isso para mim mesmo Saiba como usá-los e pode reconhecer o fato de que eles são uma solução mais elegante para muitos problemas.
Que tal você derrubar alguém para tentar aprender a ser um programador melhor? Você, senhor, é um idiota, e eu odeio você.
Eu acho que a idéia de bitmasks é algo que nem todos devem saber. Você pode desenvolver aplicativos por anos e nunca tropeçar com a necessidade deles, especialmente quando não usa DBs.
As máscaras de bits são úteis, mas onde eu começo a ficar nervoso são as mudanças de bits, p. em Java. Eles são ainda mais estranhos (e acho que o código tende a ficar muito ilegível).
Aren't Integer comparações sempre transformadas em bitmasks por um compilador decente?
Então, ao invés de dissing alguém, como eu só me ajudarei 😉 A matemática que você está procurando atrás de tudo isso é extremamente simples. O problema é que, para alguns, eles não falam binário. Suponhamos que nós temos quatro bits. Não bytes, bits. Então, alinhe, e eles se parecem com isto:
Olhando para esse padrão, você notará que o 1 está movendo um espaço para a esquerda (daí a mudança de bit) para cada novo valor.
Ok, agora vamos falar sobre & # 8220; e # 8221; Bitwise & # 8220; e & # 8221 ;. O que isso significa? Bem, se você comparar dois * binários * números como:
0010 = 4 decimais.
0011 = 5 decimais.
Veja o número mais à direita de cada conjunto de bits. O topo é 0 e o inferior é 1. Existem apenas duas regras para lembrar:
Lembre-se desta matemática binária (base 2), não matemática decimal (base-10), e não usamos & # 8220; bitwise e (& # 038;) & # 8221; em matemática decimal, apenas operadores gostam de (+, -, /, x,% entre outros).
Então, & # 8220; e & # 8221; Cada coluna de bits e você obtém o resultado:
0011 = 5 decimais.
0010 = 4 decimais.
0010 = 4 decimais = Resultado.
Que bem isso faz? Bem, assim como sua cafeteira, você acabou de criar um filtro. Imagine se isso parece ser assim:
0011 = 5 decimais = A user & # 8217; s & # 8220; direitos de acesso & # 8221 ;.
0010 = 4 decimal = A permissão necessária para acessar esta página.
Pergunta de US $ 60 000: se o usuário chegar nesta página, eles vêem a página?
Mas sim!! O segundo bit está definido em seus & # 8220; direitos de acesso & # 8221 ;.
Espero que ajude.
Btw. Trabalhei há muito tempo em software, incluindo alguns projetos renomados mundiais (NFS: Underground, por exemplo). Aprendi, se alguém tiver atitude, ele acompanha a insegurança. O melhor e o mais brilhante é fácil, acessível e sempre pronto para aprender. Ninguém sabe tudo sobre tudo.
Ainda assim, tenho duas sugestões:
a) Você deve bitwise OR (|) os valores para compor a máscara de bits, em vez de adicionar (apenas por motivos históricos;));
b) Para testar, você deve bit a bit AND a máscara de bits com um valor e, em seguida, comparar com o mesmo valor testado (em vez de 0);
Suponha que você tenha a seguinte bitmask:
1010 & # 8211;> bitmask (10 em decimal)
E você quer testar para:
0110 & # 8211;> valor (6 em ​​decimal)
Se você tiver bit a bit AND (& # 038;) os dois, você obterá:
0010 & # 8211;> bitmask & # 038; valor (2 em decimal)
O que é maior do que zero, provocando TRUE. No entanto, o valor do teste não está dentro da máscara de bits.
Então, seu script funciona se os valores que estão sendo testados são potências de 2, mas falham de outra forma.
Você poderia facilmente torná-lo à prova de prova ao testar o mesmo valor, assim:
função testbitmask ($ value, $ bitmask)
se (($ value & # 038; $ bitmask) == $ value) retornar TRUE;
Esta função funciona se a sua bitmascara é composta por poderes de 2 ou qualquer outra combinação de números.
Note-se que existe uma razão para que bitmasks sejam feitas de poderes de dois. No exemplo dado, a máscara de bits 1010 deve representar os valores 2 (0010) e 8 (1000), OR.
Se você adicionar 10 (que é 1010 em binário) para a máscara de bits, você obteria # 8230; 1010! Como, então, você poderia saber se a máscara de bits contém 2, 8 ou 10? Bem, você não conseguiu.
Para evitar esse problema, você só deveria usar os poderes de dois na sua máscara de bits, pois esses números deslocam um bit para o lado esquerdo, assim:
Mas, como em algumas situações, é útil usar outros números (você pode, se você tiver cuidado), seus scripts melhor estarão prontos ... 🙂
Espero que isto ajude!
Quanto a & # 8220; Mr. & # 8221; O comentário de John, acho que ele deve ter nascido ensinado ou algo assim # 8230; 😛
então eu ainda tenho dúvidas sobre este & # 8230;
91 | 92 = 95 (1011011 | 1011100 = 1011111)
95 & # 038; 91 = 91 CORRETA.
95 & # 038; 92 = 92.
Eu reconheço que os poderes de 2 devem ser usados ​​para evitar apenas essa complicação. No entanto, eu tenho um gerenciador de desenvolvimento que está convencido de que pode ser feito com qualquer conjunto de números. Alguém poderia iluminar para mim como eu posso usar não poderes de 2 em uma máscara de bits e ainda ser capaz de evitar falsos positivos?
então eu ainda tenho dúvidas sobre este & # 8230;
91 | 92 = 95 (1011011 | 1011100 = 1011111)
95 & # 038; 91 = 91 CORRETA.
95 & # 038; 92 = 92.
Eu reconheço que os poderes de 2 devem ser usados ​​para evitar apenas essa complicação. No entanto, eu tenho um gerenciador de desenvolvimento que está convencido de que pode ser feito com qualquer conjunto de números. Alguém poderia iluminar para mim como eu posso usar não poderes de 2 em uma máscara de bits e ainda ser capaz de evitar falsos positivos?
Você precisa usar bitmasks.
Se você quiser mais opções, use um campo de máscara de bits maior (por exemplo, 0000000 em vez de apenas 0000).
Uma coisa que vou adicionar, o principal problema com estes (e eu não gosto muito) é que você pode ficar sem bit / flags que você pode atribuir rapidamente.
Por exemplo, um número de 32 bits significa que você só pode ter até 32 bandeiras de permissão diferentes, ou itens em seu carrinho etc.
Você não usaria uma máscara de bits para lidar com os itens que um usuário tem em seu carrinho de compras, pois haveria 1000 itens (e para ter 1000s de itens suportados, você precisaria de uma máscara de bits de 1000 bits + para lidar com cada item).
Obrigado. Muito bom tutorial e ótimas respostas! Com exceção do único cara que deve morrer e limpar o pool de genes um pouco & # 8230 ;.
Esse joão deve ser totalmente retardado.
Quão estúpida pode ser uma pessoa?
Obrigado! Fui encarregado de trabalhar com um db que usa máscaras de bits e quase desenhou um espaço em branco. Eu esqueci completamente como tudo se juntou. Este artigo lembrou totalmente o padrão de pensamento de bits para mim!
Eu acho que John tem um ponto, embora ele seja um idiota. Um verdadeiro programador entende os conceitos subjacentes, isso deve ser aprendido quando você inicia a programação pela primeira vez. Ligar a si próprio (no sentido literal, não o autor) um profissional quando você não conhece os princípios básicos é como se chamar de mecânico e não saber que os carros usam motores de combustão, mas que consertam os motores de forma feliz, porque eles usam peças. Eu não gostaria que o mecânico funcionasse no meu carro. Note-se que, na minha analogia artificial, o mecânico não precisa conhecer a termodinâmica, simplesmente como funciona de modo geral, assim como um programador não precisa usar o microcódigo ou o montador.
Eu sou uma estudante junior e nunca mais ouvi falar de bitmask até hoje. Ocorreu no meu trabalho quando perguntei a um dos nossos "gênios" e # 8221; para um tutorial sobre algo. Assim como foi mencionado em uma publicação anterior, o melhor no campo é o mais útil e humilde. Aprendi que as pessoas inseguras que andavam por aí dizendo aos analfabetos que são hackers e programadores têm a atitude de John e acabam por falhar por causa disso. O trabalho em equipe é o melhor ambiente de aprendizagem na minha opinião. É impossível saber tudo.
Olá, eu coloquei-se sobre isso procurando uma atualização (eu vi isso uma vez antes em uma aula e esta seria minha primeira aplicação).
Posso estar confuso, mas acho que pode haver um problema com seu algoritmo de leigos:
Nosso carrinho pode ter os seguintes itens nele (com os valores fornecidos em seu exemplo.)
Vamos assumir que apenas uma laranja e uma maçã estão no carrinho.
sum mod 4 0 (uma maçã está no carrinho)
sum mod 2 = 0 (uma laranja NÃO está no carrinho) - & gt; ERRO.
Mas e se nós tivéssemos uma maçã no carrinho.
Isso não está funcionando porque estamos lidando com números inteiros no exemplo? (Tive a impressão de que o compilador e a velocidade de troca de bits dentro de um processador cuidariam a conversão).
Se uma máscara de bits pode ser aplicada com números inteiros, eu suspeito que eu preciso aplicar mais do que um mod para obter o resultado. Você pode me dizer o que eu faltava?
PS: Desculpe por escrever isso cerca de 3 anos de atraso; & gt;)

Opções de máscara binária
Mudamos para VS2005 e VSS 2005 e agora temos problemas.
o reconhecimento do tipo de arquivo.
Nós temos um tipo de arquivo que contém muita linha ascii (Define) e depois disso.
existe uma CTRL-Z e dados binários. Porque o reconhecimento é muito difícil.
configure a opção BINARY_MASKS no ss. ini para essa extensão.
Isso funcionou bem com o VS6, mas o VS2005 não se preocupa com a opção.
e define o tipo de arquivo para ASCII.
Cumprimentos da Alemanha.
Posso reproduzir o comportamento e confirmo isso para ser um bug no VS2005.
A variável Binary_Masks é ignorada durante operações como Checkin / Diff / etc, quando Autodetect Encoding é permitido para esse arquivo. Basicamente, o VSS detecta automaticamente a envolução com base no primeiro 1kb do arquivo, o arquivo é detectado como Ansi (porque ele começa como um arquivo Ansi) e o tipo de arquivo no banco de dados muda após o check-in. Abri o seguinte erro: lab. msdn. microsoft/ProductFeedback/viewFeedback. aspx? feedbackId=FDBK43418.
A solução alternativa é abrir a página Propriedades para os arquivos OCDLG e na guia Geral para desmarcar "Auto-detecção de codificação do arquivo local".
Todas as respostas.
Se você estiver usando uma versão beta ou pré-versão do VSS2005, você pode ter um problema com a configuração do Binary_Mask. Houve um bug na versão beta, e acho que foi corrigido no RTM.
Não, acho que estamos usando as versões mais recentes:
Você pode me enviar um arquivo de exemplo? (alinc AT Microsoft DOT com)
Posso dar uma olhada quando voltarei das férias.
Eu olhei o arquivo de exemplo que você me enviou. Começa como um arquivo de texto, tem caracteres Ctrl-Z, seguido de dados binários. Nada incomum lá.
Eu configurei a extensão OCDLG como binária para um banco de dados VSS (Na janela SSExplorer, Ferramentas / Opções na guia FileTypes), eu adicionei o arquivo ao banco de dados. Durante Add, a caixa de diálogo AddOptions mostrou o tipo de arquivo como "Auto-Detect", eo arquivo foi corretamente adicionado como Binário (respeitando as Ferramentas / Opções que eu havia configurado).
SSExplorer salva as extensões de arquivos binários no arquivo ss. ini, e aqui eu configurei "Binary_Masks = *.doc; *. Dll; *. Exe; *. Ocx; *. OCDLG"
No arquivo srcsafe. ini que você me enviou, você tem essa configuração: "Binary_Masks = *.OCDLG, *.OCVIW, *.OCTBS". VSS aceita separadores vírgulas e ponto-e-pé e ignore espaços, então você deveria estar bem lá. Substitui minha configuração com a sua, e o arquivo também foi adicionado como binário.
Eu verificaria se você não possui uma configuração para Binary_Masks no seu arquivo ss. ini que substitui as configurações do srcsafe. ini. Além disso, eu tentaria criar um novo banco de dados, adicionando extensão ODLG à lista de arquivos binários usando a caixa de diálogo Ferramentas / Opções e veja se você pode reprovar o problema.
Eu também verificaria a versão dos binários VSS no disco. Houve um erro no beta2 que afeta Binary_Masks, mas deve ser corrigido em versões mais recentes do que 8.0.50708.
Eu fiz outro teste.
Copi o arquivo que enviei para "TEMMEM_Personal_2.OCDLG" e verifiquei esse arquivo como um novo. O tipo é binário (Ok até agora ...).
Agora eu chequei que o arquivo efetuou uma alteração na seção ASCII (excluir um char) e voltou a verificar. O tipo agora é "ASCII / MBCS".
Você poderia tentar isso!
Posso reproduzir o comportamento e confirmo isso para ser um bug no VS2005.
A variável Binary_Masks é ignorada durante operações como Checkin / Diff / etc, quando Autodetect Encoding é permitido para esse arquivo. Basicamente, o VSS detecta automaticamente a envolução com base no primeiro 1kb do arquivo, o arquivo é detectado como Ansi (porque ele começa como um arquivo Ansi) e o tipo de arquivo no banco de dados muda após o check-in. Abri o seguinte erro: lab. msdn. microsoft/ProductFeedback/viewFeedback. aspx? feedbackId=FDBK43418.
A solução alternativa é abrir a página Propriedades para os arquivos OCDLG e na guia Geral para desmarcar "Auto-detecção de codificação do arquivo local".
Obrigado por abrir o bug!
Talvez uma nota adicional: VS6 não tem esse problema!
mas não foi reproduzido, então demitido como já foi corrigido.
A Microsoft está conduzindo uma pesquisa on-line para entender sua opinião sobre o site da Msdn. Se você optar por participar, a pesquisa on-line será apresentada quando você deixar o site Msdn.

No comments:

Post a Comment