How does the cpu work out greater than (>) in unsigned ints?

  • Thread starter Thread starter Superposed_Cat
  • Start date Start date
  • Tags Tags
    cpu Work
Click For Summary
The discussion explains how CPUs determine greater than or less than comparisons for unsigned integers. Unlike signed integers, where the highest bit indicates the sign, unsigned comparisons rely on checking for a carry bit after subtraction. When comparing two unsigned integers, the subtraction is performed in a wider register to accommodate potential overflow. The Arithmetic Logic Unit (ALU) sets specific bits in the Program Status Word to indicate the result of the operation, particularly using the carry bit for unsigned comparisons. This method ensures accurate comparisons without misinterpretation due to overflow.
Superposed_Cat
Messages
388
Reaction score
5
Hey all, I understand how the cpu does most things but I can't figure out how it would work out greater than or less than in unsigned integers, in signed you could simply subtract them and check the highest bit for sign (I assume) but unsigned ints will loop back to the greatest value if A-B where B>A, any help apreciated.
 
Engineering news on Phys.org
Superposed_Cat said:
Hey all, I understand how the cpu does most things but I can't figure out how it would work out greater than or less than in unsigned integers, in signed you could simply subtract them and check the highest bit for sign (I assume) but unsigned ints will loop back to the greatest value if A-B where B>A, any help apreciated.

You just do the subtraction with one extra zero bit on the left side of the operands. If you're comparing 64 bit integers, the operation is done in a 65-bit register. (In practice, the CPU designer doesn't mess with constructing actual 65-bit registers and data paths, we just do the subtraction in 64 bits and check for a carry out of the leftmost bit).
 
Last edited:
  • Like
Likes Superposed_Cat
Thank you so much! Can't believe I didn't think of that *facepalm*
 
To Expand a bit on what Nuqatory said its all in the operation of the ALU
When the ALU performs an operation, in this case a subtraction, a number of bits may get set in the Program Status Word.
For example
N: Result was negative
Z: Result was Zero
C: Result had a carry out

So if you did a piece of code
Code:
if(a>b) then
   do something
else
  do something else

the CPU would undertake the following actions
Code:
Load a into Register1
Load b into Register2 
Register1-Register2 
Branch If N bit set to LABEL1
Do something 
Branch to LABEL 2
LABEL1: 
Do something else
LABEL 2:

hope that makes sense :)
 
  • Like
Likes Superposed_Cat
cpscdave said:
the CPU would undertake the following actions
Code:
Load a into Register1
Load b into Register2
Register1-Register2
Branch If N bit set to LABEL1
Do something
Branch to LABEL 2
LABEL1:
Do something else
LABEL 2:

hope that makes sense :)

Of course the carry bit and not the N bit would be used for an unsigned comparision
 
I am trying to understand how transferring electric from the powerplant to my house is more effective using high voltage. The suggested explanation that the current is equal to the power supply divided by the voltage, and hence higher voltage leads to lower current and as a result to a lower power loss on the conductives is very confusing me. I know that the current is determined by the voltage and the resistance, and not by a power capability - which defines a limit to the allowable...

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 3 ·
Replies
3
Views
5K
Replies
5
Views
2K
Replies
20
Views
2K
Replies
10
Views
3K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
13K
  • · Replies 5 ·
Replies
5
Views
6K