
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.




Function Bitwise
	Push $0
	Push $1
	Push $2
	StrCpy $0 7
	StrCpy $1 2
 
	IntOp $2 $0 & $1
	DetailPrint "Bitwise AND: $0 & $1 = $2"
	IntOp $2 $0 | $1
	DetailPrint "Bitwise OR: $0 | $1 = $2"
	IntOp $2 $0 ^ $1
	DetailPrint "Bitwise XOR: $0 ^ $1 = $2"
	IntOp $2 $0 ~
	DetailPrint "Bitwise NOT (negate in NSIS docs): ~$0 = $2"
	DetailPrint "There are no Arithmetic shifts in NSIS"
	IntOp $2 $0 >> $1 
	DetailPrint "Right Shift: $0 >> 1 = $2"
	IntOp $2 $0 << $1
	DetailPrint "Left Shift: $0 << $1 = $2"
	DetailPrint "There are no Rotates in NSIS"
 
 
	Pop $2
	Pop $1
	Pop $0
FunctionEnd