Modify

Opened 10 years ago

Closed 10 years ago

#1285 closed Bug (Fixed)

Unexpected result when using BitShift

Reported by: ProgAndy Owned by: Valik
Milestone: 3.3.1.6 Component: AutoIt
Version: 3.3.1.5 Severity: None
Keywords: Cc:

Description

BitShift seems to return a wrong result if the input is a 64bit integer variable. In previous AutoIt versions it used to cut all numbers to 32bit, but now the 64-bit integer is shifted over the whole 64bit range, which leads to unexpected results.

;#BETA
$iNum1 = 4294967295
$iNum2 = 0xFFFFFFFF
$iNum3 = -1

MsgBox(0, 'Number tests', "$iNum1 = 4294967295 	-> " & $iNum1 & @CRLF & _
				"$iNum2 = 0xFFFFFFFF 	-> " & $iNum2 & @CRLF & _
				"$iNum3 = -1 		-> " & $iNum3 & @CRLF & @CRLF & _
				"$iNum1 = $iNum2 	-> " & ($iNum1 = $iNum2) & @CRLF & _
				"$iNum1 = $iNum3 	-> " & ($iNum1 = $iNum3) & @CRLF & _
				"$iNum3 = $iNum3 	-> " & ($iNum3 = $iNum3) & @CRLF & @CRLF & _
				"I expected $iNum1 and $iNum2 to be equal, since 0xFFFFFFFF is hex notation for 4294967295" _
				)

MsgBox(0, "+/- BitShift", "BitShift($iNum1, 16) -> " &  BitShift($iNum1, 16) & @CRLF & _ 
			"BitShift($iNum2, 16) -> " & BitShift($iNum2, 16) & @CRLF & _ 
			"BitShift($iNum3, 16) -> " & BitShift($iNum3, 16) & @CRLF & _
			"The BitShift for $iNum1 seems to be incorret." )

When declaring the variables for the example i noticed the different interpretation of 0xFFFFFFFF and its decimal representation (4294967295). I don't know if this is a bug and it exists in previous versions of AutoIt, too. 4294967295 is treated as a 64bit integer and keeps its positive value, whereas The Hex is treated as signed 32bit which results in -1. So the identical values can not be testet as equal

Attachments (0)

Change History (2)

comment:1 Changed 10 years ago by ProgAndy

Oh no, i ran my BitNot-Test with Stable. Now with Beta, the error occurs, too:

;#BETA
$iNum1 = 4294967295

MsgBox(0, '', BitNOT($iNum1))
MsgBox(0, '', BitNOT(BitNOT($iNum1)))

comment:2 Changed 10 years ago by Valik

  • Milestone set to 3.3.1.6
  • Owner set to Valik
  • Resolution set to Fixed
  • Status changed from new to closed

Fixed by revision [5372] in version: 3.3.1.6

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Modify Ticket

Action
as closed The owner will remain Valik.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.