Skip to main content

BIT SHIFTING

Bit Shifting

bit shift moves each digit in a number's binary representation left or right. There are three main types of shifts:

Left Shifts

When shifting left, the most-significant bit is lost, and a 0 bit is inserted on the other end.

The left shift operator is usually written as "<<".

  0010 << 1  →  0100
0010 << 2  →  1000

A single left shift multiplies a binary number by 2:

  0010 << 1  →  0100

0010 is 2
0100 is 4

Logical Right Shifts

When shifting right with a logical right shift, the least-significant bit is lost and a 0 is inserted on the other end.

  1011 >>> 1  →  0101
1011 >>> 3  →  0001

For positive numbers, a single logical right shift divides a number by 2, throwing out any remainders.

  0101 >>> 1  →  0010

0101 is 5
0010 is 2

Arithmetic Right Shifts

When shifting right with an arithmetic right shift, the least-significant bit is lost and the most-significant bit is copied.

Languages handle arithmetic and logical right shifting in different ways. Java provides two right shift operators: >> does an arithmetic right shift and >>> does a logical right shift.

  1011 >> 1  →  1101
1011 >> 3  →  1111

0011 >> 1  →  0001
0011 >> 2  →  0000

The first two numbers had a 1 as the most significant bit, so more 1's were inserted during the shift. The last two numbers had a 0 as the most significant bit, so the shift inserted more 0's.

If a number is encoded using two's complement, then an arithmetic right shift preserves the number's sign, while a logical right shift makes the number positive.

  // Arithmetic shift
1011 >> 1  →  1101
    1011 is -5
    1101 is -3

// Logical shift
1111 >>> 1  →  0111
    1111 is -1
    0111 is  7

Comments

Popular posts from this blog

SQL - Part 1

SQL tutorial from scratch -- Part 1


                                                            Introduction


Before going deep dive into in SQL I want to explain the main purpose of DB(database).
Suppose we have large amount of data (for example it would be the students in the same class), and we want to create some website which is give us all information about them. How we do it. Of course using database.Maybe you ask yourself questions: "I can store them in file or array". Yes you is exactly right. But imagine you have large amount of data and if you store them in file or array your program/website will work very hard. Now let's visualize databases:





As we can see it is one of the basic db type which is store title, release_year, length and replacement_cost.

Don't worry about DB if you don't understand them very well. Our next paragraphs will explain it more accurately and also I try to add some important images.






                    "Yes I know that right …

A simple calculator for adding and subtracting in c++

A simple calculator for adding and subtracting in c++











In this post, I write a code about very simple calculator in c++. Actually it is the problem in e-olymp.com
If you're not familiar with this website then you can go below link:
https://www.e-olymp.com/en/problems/7411


Input is in this form : 

                                             x+5=2  or 1+x=4  or  1+4=x
In the output we give the value of x.

It has very simple solution. That's why i give there only code and when you read this code line-by-line you easily understand it     :)

Solution:


#include<iostream>#include<string>using namespace std;int main(){ string statement;cin>>statement; int last_number = 0; if(statement[statement.length()-1] == '0' || statement[statement.length()-1] == '1'|| statement[statement.length()-1] == '2' || statement[statement.length()-1] == '3'|| statement[statement.length()-1] == '4' || statement[statement.length()-1] == '…

Java Proqramlashdirma Dili

1) Dostlar bu blogda java proqramlasdirma dili haqqinda melumat verecyik

Java proqramlasdirma dili high level programming language sinfine daxildir bu proqramlasdirma dili muxtelif platformalarda calisirki bu da onun ustun cehetlerinden biridir. Java proqramladirma diline oxshar dillere misal olaraq C, C#, C++ misal gostermek olar. Bunu qeyd etmek kifayetdir ki eger siz sadaladigim dillerden hec olmasa birini mukemmel bilsez o biri diller sizin ucun su kimi asan olar. Yeni esas sizin OOP den basiniz cixmalidir birdeki alqoritmleri derinden menisemek lazimdir. Eger alqoritmleri derinden menimsemek isteyirsinizse sizin sade riyazi biliklerden basinziz cixmalidir eks halda alqoritme geldikde sizin ucun cetin ola biler. Lakin size sad xeberim var, hetta riyzi bilikleriniz o qeder de yaxi deyilse de siz oz alqortim biliklerinizi tekmillesdir bilersiniz bunun ucun her movzudaki alqoritmlere aid coxlu mesele, misal hell etmek ve partnyorunuzla muzakire etmelisiniz . Bu muzakire etmek meseles…