How integers are stored in memory using two’s complement

There are many schemes for representing negative integers with patterns of bits. One scheme is sign-magnitude. It uses one bit (usually the leftmost) to indicate the sign. “0” indicates a positive integer, and “1” indicates a negative integer. The rest of the bits are used for the magnitude of the number.

Two’s complement Method

let’s take an example : 7 = 0 1 1 1 : lets assume we work on a 4 bits

2^(4–1) = 2³ = 8
we have : 8 4 2 1
+ 7 = 0 1 1 1

in memory computer transform it into :

step 1 : reverse what u have ( every 0 changes to 1 and every 1 changes to 0 ).

First Complement: 1 0 0 0

step 2 : add 1 to the 1'st complement

  1 0 0 0
+ 1
___________
1 0 0 1
Second Complement: 1 0 0 1

the first bit on the left is telling us the sign of the number so :

-8 4 2 1
----------
1 0 0 1
----------
-8 + 1 = -7

lets take on other example :

to calculate the subtraction of 2 binary number on 7-bit-binary by using straight forward method:
(+39)-(+25)?

    0 1 2         
---------------
0 1 0 0 1 1 1 => 32 + 4 + 2 + 1 = 39
- 0 0 1 1 0 0 1 => 16 + 8 + 1 = 25
________________
0 0 0 1 1 1 0 => 8 + 4 + 2 = 14
----------------
64 32 16 8 4 2 1

this technique works but its a little bit long and can get confused let’s use Two’s complement Method: 39 + (-25)?

first lets convert the positive 25 ( 0 0 1 1 0 0 1 )to negative:

1'st comp: 1 1 0 0 1 1 0sec comp : 1 1 0 0 1 1 0
+ 0 0 0 0 0 0 1
_______________
1 1 0 0 1 1 1 => (-25)
------------------------
-64 + 32 + 0 + 0 + 4 + 2 + 1 = (-25)

now we can add 39 +(-25)

  0 1 0 0 1 1 1 
+ 1 1 0 0 1 1 1
________________
1 0 0 0 1 1 1 0 => 14
----------------
64 32 16 8 4 2 1

the first bit one the left is “ 1 “ is a carry over, because we didn’t have that many digit to begin with. We can just get rid ( ignore the over flow value ) of it because it is out of range.
so our real number is : 0 0 0 1 1 1 0 => 8 + 4 + 2 = 14

an other example : 43–71

1'st comp: 0 1 0 0 0 1 1 1sec comp : 1 0 1 1 1 0 0 0 
+ 0 0 0 0 0 0 0 1
__________________
1 0 1 1 1 0 0 1 => (-71)
0 0 1 0 1 0 1 1
+ 1 0 1 1 1 0 0 1
__________________
1 1 1 0 0 1 0 0
------------------
128 64 32 16 8 4 2 1
-128 + 64 + 32 + 4 = -28

To Resume

The MSB (most significant bit) bit is used to indicate whether the number is positive or negative.

How integers are stored in memory?

For positive numbers MSB will be 0.
For negative numbers MSB will be 1.

This binary equivalent of 65 will be stored in 32-bit memory like below,

How negative integers are stored in memory?

This 2’s complement form will be stored in computer.

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Android : IntentService - The saviour

The Veloce example of a superior CPQ

Two super-CSS animation properties for line SVGs: stroke-dasharray & stroke-dashoffset

Kitty is designed as an SVG icon, animated in CSS, and activated on hover.

Unqork’s Head of Solutions, Jane Tran — Leading The No-Code Revolution & Scaling a Unicorn!

Fix error “Unable to Start Camtasia. “EditorInterop.dll” is Missing

IT heroes from then and now

Microsoft Azure VS Amazon Web Services

YeeCo Weekly Update

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Salah Besbes

Salah Besbes

More from Medium

Back with a Renewed Sense of Porpoise

Rehabilitating Rosé (Part 1)

Aim the pistol up and down using blend trees