Saltar al contenido

Cómo definir MSB o LSB de un número binario

Luego de buscar en diversos repositorios y páginas al final nos hemos encontrado la respuesta que te compartimos ahora.

Solución:

Una combinación de overset y substack le permite colocar las etiquetas y las flechas sobre los dígitos respectivos. Para asegurarse de que la presencia de las etiquetas no afecte el espaciado de los dígitos, use mathclap. Si tiene muchos casos de este tipo, es útil definir un macro eso toma dos argumentos: la etiqueta y el dígito.

ingrese la descripción de la imagen aquí

documentclassarticle
usepackagemathtools % to access overset, substack, mathclap, and text macros
newcommandbitpos[2]%
    oversetsubstackmathclaptexttiny #1\ downarrow#2
begindocument
$bitposMSB1001100bitposLSB1$
enddocument

Apéndice: El código que se muestra arriba asume que bitpos se utilizará en el modo matemático. Si ese no es necesariamente el caso, simplemente proporcione un ensuremath... instrucción contenedora también, es decir, definir bitpos como sigue:

newcommandbitpos[2]%
    ensuremathoversetsubstackmathclaptexttiny #1\ downarrow#2

Quizás un poco más de lo esperado, pero bueno, obtienes conversión automática y eliminación opcional de las etiquetas.

documentclassarticle
usepackageamsmath,xparse

ExplSyntaxOn
NewDocumentCommandbitsOm
 
  group_begin:
  keys_set:nn  chekooo/bits   #1 
  chekooo_bits:n  #2 
  group_end:
 

keys_define:nn  chekooo/bits 
 
  convert .bool_set:N = l_chekooo_convert_bool,
  convert .initial:n  = false,
  convert .default:n  = true,
  nosb    .bool_set:N = l_chekooo_show_bool,
  nosb    .initial:n  = false,
  nosb    .default:n  = true,
 

cs_new_protected:Nn chekooo_bits:n
 
  bool_if:NTF l_chekooo_convert_bool
   
    chekooo_process:f  int_to_bin:n  #1  
   
   
    chekooo_process:n  #1 
   
 

cs_new_protected:Nn chekooo_process:n
 
  bool_if:NTF l_chekooo_show_bool
   
    #1
   
   
    chekooo_bits_show:n  #1 
   
 
cs_generate_variant:Nn chekooo_process:n  f 

cs_new_protected:Nn chekooo_bits_show:n
 
  int_compare:nTF  tl_count:n  #1  < 2 
   
    #1
   
   
    __chekooo_bits_show:n  #1 
   
 

cs_new_protected:Nn __chekooo_bits_show:n
 
  seq_set_split:Nnn l__chekooo_bits_seq    #1 
  seq_pop_left:NN l__chekooo_bits_seq l__chekoo_msb_tl
  seq_pop_right:NN l__chekooo_bits_seq l__chekoo_lsb_tl
  mspace10mu % for the M
  overset
   
    substackscriptscriptstylehidewidthmathrmMSBhidewidth\downarrow
   
   l__chekoo_msb_tl
  mspace8mu
  seq_use:Nn l__chekooo_bits_seq  mspace8mu 
  mspace8mu
  overset
   
    substackscriptscriptstylehidewidthmathrmLSBhidewidth\downarrow
   
   l__chekoo_lsb_tl
  mspace8mu
 

seq_new:N l__chekooo_bits_seq
tl_new:N l__chekoo_msb_tl
tl_new:N l__chekoo_lsb_tl

ExplSyntaxOff

begindocument

[
bits1001+
bits[nosb]1001+
bits[convert]42+
bits[convert,nosb]42
]
[
bits0+bits1+bits10+bits11+bits100
]

enddocument

ingrese la descripción de la imagen aquí

Comentarios y puntuaciones del artículo

Si guardas alguna incertidumbre o disposición de renovar nuestro tutorial te sugerimos realizar una anotación y con mucho gusto lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *