## Overview

A signed integer value type. On 32-bit platforms, `Int` is the same size as `Int32`, and on 64-bit platforms, `Int` is the same size as `Int64`.

## 1. Declaring Constants and Variables

• Constants and variables must be declared before they’re used. You declare constants with the let keyword and variables with the var keyword.
``````let constantNum = 10
var variableNum = 10
print("constant data type value: \(constantNum)")
print("variable data type value before change :\(variableNum)")
variableNum = 40
print("variable data type value after change :\(variableNum)")
//prints constant data type value: 10
//variable data type value before change :10
//variable data type value after change :40
``````

## 2. Type Annotations

• You can provide a type annotation when you declare a constant or variable, to be clear about the kind of values the constant or variable can store.
• Write a type annotation by placing a colon after the constant or variable name, followed by a space, followed by the name of the type to use.
``````let number1 : Int = 100
print(number1)
``````

## 3. Naming Constants and Variables

• Constant and variable names can contain almost any character, including Unicode characters.
``````let n = 10
print(n)
let 你好 = 145
print(你好)
let 🐶🐮 = 20000
print(🐶🐮)
//prints 10
// 145
// 20000
``````

## 4. Converting Floating-Point Values

• Creates an integer from the given floating-point value, rounding toward zero.
``````let x = Int(21.5)
print(x)
let y = Int(-21.5)
print(y)
//prints 21
//prints -21
``````

## 5. Performing Calculations

#### 5.1 Integer Operators

• Perform arithmetic and bitwise operations or compare values.
``````let x = Int(21.5)
let y = Int(-21.5)
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x >> y)
print(x ^ y)
//prints 0
// 42
// -441
// -1
// 44040192
// -2
``````

#### 5.2 negate()

• Replaces this value with its additive inverse.
``````var z = 30
print(z)
z.negate()
print(z)
//prints 30
//prints -30
``````

## 6. Finding the Sign and Magnitude

#### 6.1 magnitude

• The magnitude of this value.
``````let y = -200
print(y.magnitude)
//prints 200
``````

#### 6.2 abs(_:)

• Returns the absolute value of the given number.
``````let y = -200
print(abs(y))
//prints 200
``````

#### 6.3 signum()

• Returns -1 if this value is negative and 1 if it’s positive; otherwise, 0.
``````let y = -200
print(y.signum())
//prints -1
``````

## 7. Describing an Integer

#### 7.1 description

• A textual representation of this value.
``````let y = -200
print(y.description)
//prints -200
``````

#### 7.2 hashValue

• The integer’s hash value.
``````let y = -200
print(y.hashValue)
``````

#### 7.3 customMirror

• A mirror that reflects the Int instance.
``````let y = -200
print(y.customMirror)
// prints Mirror for Int
``````

#### 7.4 customPlaygroundQuickLook

``````let y = -200
print(y.customPlaygroundQuickLook)
//prints int(-200)
``````

## 8. Instance Properties - words

• A collection containing the words of this value’s binary representation, in order from the least significant to most significant.
``````let y = -200
print(y.words)
//prints Words(_value: -21)
``````

## 9. Infrequently Used Functionality

#### 9.1 distance(to:)

``````let y = -200
print(y.distance(to: 2))
//prints 202
``````

``````let y = -200
//prints -197
``````

## 10. Working with Binary Representation

#### 10.1 bitwidth

The number of bits in the binary representation of this value.

``````let y = 200
print(y.bitWidth)
//prints 64
``````

#### 10.2 nonzeroBitCount

• The number of bits equal to 1 in this value’s binary representation.
``````let l: Int8 = 0b0001_1111
print(l.nonzeroBitCount)
//prints 5
``````

• The number of leading zeros in this value’s binary representation.
``````let l: Int8 = 0b0001_1111
//prints 3
``````

#### 10.4 trailingZeroBitCount

• The number of trailing zeros in this value’s binary representation.
``````let l: Int8 = 0b0001_1111
print(l.trailingZeroBitCount)
//prints 0
``````

## 11. Working with Byte Order

#### 11.1 byteSwapped

• A representation of this integer with the byte order swapped.
``````let l: Int8 = 0b0001_1111
print(l.byteSwapped)
//prints 31
``````

#### 11.2 littleEndian

``````let l: Int8 = 0b0001_1111
print(l.littleEndian)
//prints 31
``````

#### 11.3 bigEndian

``````let l: Int8 = 0b0001_1111
print(l.bigEndian)
//prints 31
``````

Next - Float by Example