maths Archives - SoftUni Global https://softuni.org/tag/maths/ Learn Programming and Start a Developer Job Thu, 28 Apr 2022 11:27:11 +0000 en-US hourly 1 https://wordpress.org/?v=6.1.3 https://softuni.org/wp-content/uploads/2022/04/cropped-SoftUni-Global-Logo-Square-notext-32x32.png maths Archives - SoftUni Global https://softuni.org/tag/maths/ 32 32 Bitwise Operations in Programming [Dev Concepts #34] https://softuni.org/dev-concepts/bitwise-operations-in-programming/ https://softuni.org/dev-concepts/bitwise-operations-in-programming/#respond Wed, 27 Apr 2022 06:00:00 +0000 https://softuni.org/?p=18889 In this lesson you will get an idea of bitwise operations: how they work and why we need them in computer programming. We will explain and demonstrate the main bitwise operators and introduce the concept of bitmasks.

The post Bitwise Operations in Programming [Dev Concepts #34] appeared first on SoftUni Global.

]]>

In this article, we will also solve several practical problems using bitwise operations:

  • Get the last bit from an integer
  • Get the bit at a certain index from an integer
  • Change the bit at a certain index in an integer
  • Extract the bit before the last from an integer

If you are not familiar with bits and storing data on the computer you can read our previous articles about them here:

Bitwise Operations

First, let’s start with learning about the bitwise operations in programming. They work with the binary representations of the numbers, applying bit-by-bit calculations. For example, if we have two 8-bit numbers, we can apply a bitwise operation, which takes as input the first 8 bits and the second 8 bits and produces as a result new 8 bits.

A simple bitwise operator over a single argument is the “tilde” operator – the bitwise logical NOT (also called negation). The operator “tilde” turns all zeroes to ones and all ones to zeroes, like the “exclamation mark” operator for the Boolean expressions, but it works bit by bit. For example, if we have the binary number1 0 0″, its negation “tilde 1 0 0” is “0 1 1“.

OperatorTable

The table above illustrates the work of the bitwise OR, AND, and XOR operators.

  • The bitwise OR operator (denoted by the vertical bar in most programming languages) returns 1, if one of its input bits is 1, otherwise returns 0.
  • The bitwise AND operator (denoted by the ampersand in most programming languages) returns 1, if both of its input bits are 1, otherwise returns 0.
  • The bitwise exclusive OR (XOR) operator (denoted by the ampersand in most programming languages) returns 1 if one of its arguments is 1, but not both at the same time, otherwise returns 0.

Bit Shifts

Bit shifts are bitwise operations, where bits inside a number are moved (or shifted) to the left or the right. During the shifting operation, the bits that fall at invalid positions are lost, and the bits which come from missing positions are replaced by 0.

left-and-right-shift

Bit shifting can be applied for 8-bit, 16-bit, 32-bit, and 64-bit numbers, as well as for numbers of other sizes in bits. The bit size of the number being shifted defines the valid bit positions and where the bits get lost. Bits can be shifted by more than 1 position. For example, 5 shifted left twice is 20 and 5 shifted right twice is 1.

Why We Need Bitwise Operations?​

Processing bits is important for many fields of computer science, information technologies, and software systems, like networking protocols, data storage, and file systems, binary file formatsmemory management, data compression, data encryption, video streaming, Internet of things (IoT) systems, low-level programming, computer graphics, and many others.

Binary-and-Text-File

Data compression algorithms replace bit or byte sequences with shorter bit sequences. For example, the “DEFLATEalgorithm, used to compress data in the ZIP files, finds the most often sequences and replaces them with shorter sequences, while it preserves a dictionary between the original bit sequences and their shorter compressed form. This is done using heavy bit-level processing with bitwise operations.

Many binary file formats use bits to save space. For example, PNG images (the Portable Network Graphics image format) use 3 bits to specify the color format used (8-bit color, 24-bit color, 32-bit color with transparency). These 3 bits are located at a certain offset in the PNG image header bytes, so reading and writing the value encoded in these 3 bits require bitwise operations.

To sum it up, bitwise operators work with the binary representations of the numbers, applying bit-by-bit calculations. Bit shifts are bitwise operations, where bits inside a number are shifted to the left or the right. These concepts are an important aspect of many fields of computer science.

Lesson Topics

In this tutorial, we cover the following topics:
  • Bitwise Operations

  • Bitwise Operators – Examples

  • Bit Shifts

  • Bitwise Operations Problems

  • Why We Need Bitwise Operations?

  • Bit Before the Last – Problems

Lesson Slides

The post Bitwise Operations in Programming [Dev Concepts #34] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/bitwise-operations-in-programming/feed/ 0
Data Representation in Computer Memory [Dev Concepts #33] https://softuni.org/dev-concepts/data-representation-in-computer-memory/ https://softuni.org/dev-concepts/data-representation-in-computer-memory/#respond Thu, 31 Mar 2022 06:00:00 +0000 https://softuni.org/?p=16611 In this article of the series Dev Concepts, we take a look at the binary representation of integers, floating-point numbers, text, and unicode.

The post Data Representation in Computer Memory [Dev Concepts #33] appeared first on SoftUni Global.

]]>

In this lesson, we will talk about storing data in the computer memory. By the end of this article, you will know how to work with binary representation of integers, floating-point numbers, text, and Unicode.

Integer numbers are represented in the computer memory, as a sequence of bits: 8-bits, 16-bits, 24-bits, 32-bits, 64-bits, and others, but always a multiple of 8 (one byte). They can be signed or unsigned and depending on this, hold a positive, or negative value. Some values in the real world can only be positive – the number of students enrolled in a class. There can be also negative values in the real world such as daily temperature.

Positive 8-bit integers have a leading 0, followed by 7 other bits. Their format matches the pattern “0XXXXXXX” (positive sign + 7 significant bits). Their value is the decimal value of their significant bits (the last 7 bits).

Negative 8-bit integers have a leading one, followed by 7 other bits. Their format matches the pattern “1YYYYYYY” (negative sign + 7 significant bits). Their value is -128 (which is minus 2 to the power of 7) plus the decimal value of their significant bits.

8-bit-binary-integer

Example of signed 8-bit binary integer

The table below summarizes the ranges of the integer data types in most popular programming languages, which follow the underlying number representations that we discussed in this lesson. Most programming languages also have 64-bit signed and unsigned integers, which behave just like the other integer types but have significantly larger ranges.

ranges-of-integer-data-types

  • The 8-bit signed integers have a range from -128 to 127. This is the sbyte type in C# and the byte type in Java.
  • The 8-bit unsigned integers have a range from 0 to 255. This is the byte type in C#.
  • The 16-bit signed integers have a range from -32768 to 32767. This is the short type in Java, C#.
  • The 16-bit unsigned integers have a range from 0 to 65536. This is the ushort type in C#.
  • The 32-bit signed integers have a range from -231231-1 (which is from minus 2 billion to 2 billion roughly).  This is the int type in C#, Java, and most other languages. This 32-bit signed integer data type is the most often used in computer programming. Most developers write “int” when they need just a number, without worrying about the range of its possible values because the range of “int” is large enough for most use cases.

Representing Text

Computers represent text characters as unsigned integer numbers, which means that letters are sequences of bits, just like numbers.

The ASCII standard represents text characters as 8-bit integers. It is one of the oldest standards in the computer industry, which defines mappings between letters and unsigned integers. It simply assigns a unique number for each letter and thus allows letters to be encoded as numbers.

representing-textFor example, the letter “A” has ASCII code 65. The letter “B” has ASCII code 66. The “plus sign” has ASCII code 43. The hex and binary values are also shown and are useful in some situations.

Representing Unicode Text

The Unicode standard represents more than 100,000 text characters as 16-bit integers. Unlike ASCII it uses more bits per character and therefore it can represent texts in many languages and alphabets, like Latin, Cyrillic, Arabic, Chinese, Greek, Korean, Japanese, and many others. 

Here are a few examples of Unicode characters:

representing-unicode-text

  • The Latin letter “A” has Unicode number 65.
  • The Cyrillic letter “sht” has Unicode number 1097.
  • The Arabic letter “beh” has Unicode number 1576.
  • The “guitar” emoji symbol has Unicode number 127928.

In any programming language, we either declare data type before using a variable, or the language automatically assigns a specific data type. In this lesson, we have learned how computers store integer numbers, floating-point numbers, text, and other data. These concepts shouldn’t be taken lightly, and be careful with them!

Lesson Topics

In this tutorial we cover the following topics:
  • Representation of Data

  • Representing Integers in Memory

  • Representation of Signed Integers

  • Largest and Smallest Signed Integers

  • Integers and Their Ranges in Programming

  • Representing Real Numbers

  • Storing Floating-Point Numbers

  • Representing Text and Unicode Text

  • Sequences of Characters

Lesson Slides

The post Data Representation in Computer Memory [Dev Concepts #33] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/data-representation-in-computer-memory/feed/ 0