
Basic Data Operation

This is a basic data operation. It represents a fundamental action on a basic data type.
You may see other such operations in the Basic Data Operations category, or:


Integer Operations
Arithmetic |
Comparison
Boolean Operations
Bitwise |
Logical
String Operations
Concatenation |
Interpolation |
Comparison |
Matching
Memory Operations
Pointers & references |
Addresses




Task

Write a routine to perform a bitwise AND, OR, and XOR on two integers, a bitwise NOT on the first integer, a left shift, right shift, right arithmetic shift, left rotate, and right rotate.

All shifts and rotates should be done on the first integer with a shift/rotate amount of the second integer.

If any operation is not available in your language, note it.




program main;
 
  initial begin
    bit [52:0] a,b,c;
    a = 53'h123476547890fe;
    b = 53'h06453bdef23ca6;
 
    c = a & b; $display("%h & %h = %h", a,b,c);
    c = a | b; $display("%h | %h = %h", a,b,c);
    c = a ^ b; $display("%h ^ %h = %h", a,b,c);
    c = ~ a;   $display("~%h = %h", a, c);
 
    c = a << 5; $display("%h << 5 = %h", a, c);
    c = a >> 5; $display("%h >> 5 = %h", a, c);
 
    c = { a[53-23:0], a[52-:23] }; $display("%h rotate-left 23 = %h", a, c);
    c = { a[1:0], a[52:2] }; $display("%h rotate-right 2 = %h", a, c);
  end
 
endprogram