最近在學fpga,所以不得不接觸的就是verilog這一優秀的硬體描述語言。
對於該語言,其與c語言的程式設計思想與幾乎截然不同。乙個是硬體描述語言,
乙個是軟體描述語言,乙個是並行系統,乙個是序列系統。
但是對於verilog中的一些運算子卻與c語言中的很類似。
例如算數運算子,關係運算子,邏輯運算子等等。所以很多像我一樣的初學者都時不時的與c語言模擬。
但其中有乙個不易發覺的誤區,那就是verilog中的移位與c語言中的不同。.
例:4』b1010<<1 = 5』b10100; //左移1位後用0填補低位
4』b1010<<2 = 6』b101000; //左移2位後用00填補低位
1<<6 = 32』b1000000; //左移6位後用000000填補低位
4』b1001>>1 = 4』b0100; //右移1位後,低1位丟失,高1位用0填補
4』b1001>>4 = 4』b0000; //右移4位後,低4位丟失,高4位用0填補
總結:verilog中的移位運算子在左移時位寬加深,右移時位寬不變。這與c語言有出入!
移位運算子
移位運算子不外乎就這三種 左移 帶符號右移 和 無符號右移 1 左移運算子 左移運算子 使指定值的所有位都左移規定的次數。1 它的通用格式如下所示 value num num 指定要移位值value 移動的位數。左移的規則只記住一點 丟棄最高位,0補最低位 如果移動的位數超過了該型別的最大位數,那麼...
移位運算子
二進位制運算子,包括位運算子和移位運算子,使程式設計師可以在二進位制基礎上運算元字,可以更有效的進行運算,並且可以以二進位制的形式儲存和轉換資料,是實現網路協議解析以及加密等演算法的基礎。左移 帶符號右移 和 無符號右移 左移 在數字沒有溢位的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,...
移位運算子
位運算子的執行速度要快於算術運算子,用位運算子代替算數符會加快程式執行速度。移位運算子包括 左移 和 右移 左移運算子的作用是將乙個二進位制位的運算元按指定的移動位數向左移動,移出位被丟棄,右邊的空位一律補0 右移運算子的作用是將乙個二進位制位的運算元按指定的移動位數向右移動,移出位被丟棄,左邊的空...