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

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 [ s

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 impor

Representing Graphs in C++

                           How to represent graphs in C++ Todays one of the most important topic is Graph theory. Maybe someone of you wouldn't be familiar with it, is yes then go to  http://mypdf.pythonanywhere.com/  there go to programming books and there you can find Kenneth Rosen Discrete Mathematics books just download it and 10, 11th paragraphs about graphs. You must read for understanding today's lesson. Sometimes in my website cause some errors (it is developing) if yes then contact me  my_email  and I will send you the book. Now let's speak about graphs: Graphs are used everywhere:  in websites, in social media apps (such a Facebook), telephone calls and so on. If in future you want to write great applications you must know about graphs and also implement them. The basic terms of graphs are vertices(plural) and vertex(single), degree of graph deg(G), neighborhood of graphs (adjacency of graphs), simple graphs, loops and so on. For better unde