# Autres langages > Autres langages > VHDL >  error: * can not have such operands in this context?

## mariyouma

Bonjour,

J'essaye de multiplier un std_logic_vector par un nombre ngatif :


```

```

Mais j'obtiens cette erreur : ** can not have such operands in this contex*

Pouvez-vous m'aider  rgler ce problme ?
Merci d'avance.

----------


## titiri

Bonjour,

     Plusieurs conseils (pas forcment par ordre d'importance) :
les bibliothques std_logic_arith & std_logic_unsigned, malgr le mot IEEE devant, ne sont pas vraiment IEEE  ::?: .  viter doncces 2 bibliothques sont incompatibles avec numeric_std, et vice-versa. C'est soit std_logic_arith & unsigned, soit numeric_std, mais pas les 2 en mme tempsil vaut mieux orienter dans le sens descendant les vecteurs (donc 7 downto 0 et 15 downto 0). Mme dans les cas o le vecteur est plus cohrent dans le sens ascendant, cela reste dangereux  ::aie:: .vous souhaitez faire (-2) * a, donc a*2, puis un signe "-". Une multiplication par 2 est simplement un dcalage  gauche de 1 bit (si vect=xyz, alors vect*2 = xyz0)  :8-): . le "-" (changement de signe) : un peu bizarre avec la std_logic_unsigned qui "force" les std_logic_vecteur  tre considrs comme des "unsigned". Ici la numeric_std est 1000 fois mieux. GROS WARNING : surtout pas la std_logic_signed !!!! Trop de problmes avec  ::aie:: . pour a => (-a) : vecteur => not(vecteur)+1  ::mrgreen:: 


Cdlt

----------

