Chapter II Representation and processing of information

- Three types of numbers: unsigned, signed (2 complement), floating-point number
- Overflow: The representation of a computer is to encode a number with a finite number of bits, which overflows when the result is too large to be represented
- Integer arithmetic: The numeric range of coding is small, precise; floating-point arithmetic: Large range of values, approximate,
**non-binding**

§1 Information Store

- Smallest addressable Memory Unit: bytes (8 bits)
- Virtual memory, address, virtual address space (P22)

16 or 16 binary notation

The domain value of one byte in hexadecimal is 00H~FFH

Hexadecimal numeric constants that start with 0x or 0X

Shortcut algorithm: to represent a numeric constant of x=2^n,n=i+4j, and 0≤i≤3, the initial hexadecimal number is 1 (i=0), 2 (I=1), 4 (i=2), 8 (i=3), followed by the J hexadecimal 0. The J here represents the hexadecimal bits corresponding to each of the four-bit bits, and the range of I is because the range of each bit in hexadecimal is 0-f

Second, the word

Word length: Indicates the nominal size of the integer and pointer data. Determine the maximum size of the virtual address space

The word length is W, the virtual address range is 0~2^w-1, the program accesses up to 2^w bytes, and the CPU processes w bit data at a time

Third, data size

In computers of different lengths, the same data types occupy different numbers of bytes

**Generate 32-bit code on a 64-bit machine: gcc-m32**

Iv. Addressing and byte order

Multiple-byte objects are stored as contiguous sequence of bytes, with the address of the object being the smallest address in the byte used

**Byte order is the basis of network programming**

1. Two general rules (W is an integer, bits are expressed as [Xw-1,xw-2,......, x1,x0], where Xw-1 is the most significant bit and X0 is the least significant bit):

- Small End method: least significant byte in front (most Intel compatible machines)
- Big-endian: The most significant bytes in front (most IBM and Sun Microsystems machines)
- Some new microprocessors use a double-ended method

**The order of the bytes inside is constant**

Disassembler: A tool that determines the sequence of instructions represented by an executable program file; the degree to which the executable program file is converted back to a more readable ASCII format

2. Forcing type conversions

V. to represent a string

The string in C is encoded as an array of characters ending with a null (value of 0) character

Command man ASCII: Get ASCII character code table

Vi. Code of presentation

Binary code has different encoding rules on different operating systems. So the binary code is incompatible

Seven, Boolean algebra

1. Simplest Boolean algebra: With & or | Non-XOR ^ (result 0 or 1)

2. Extended Boolean operation: Bitwise VECTOR operation (the result is still a bit vector)

Application of bit vectors: representing a finite set, encoding a set

Eight, bit-level arithmetic

1. Bitwise logical operation of the bit vector, the result is still a bit vector

2. Mask operation

Mask: Used to selectively mask a signal, is a bit pattern that represents a collection of bits selected from a word.

A bit vector is used to encode the set, by specifying a mask to selectively mask or not shielding some signals, a position of 1 o'clock, indicating that the signal i is valid; 0 indicates that the signal is blocked. This mask represents a collection of valid signals.

0xFF: Masks All bytes except the least significant byte.

~0: Generate a full 1 mask

Nine, logical operation

1. Logical operators: With && or | | Non -!

2. Calculation method: All non-0 parameters represent false for the true,0 parameter. 1 for true,0 rep false

- A logical operation has the same behavior as a bitwise operation only if the parameter is limited to 0 or 1 o'clock.
- If the first parameter is evaluated to determine the result of the expression, the logical operator does not evaluate the subsequent parameters.

Ten, shift operation

1. Shift left <<

2. Move Right >>

Logical right Shift: Fill K 0 at left, more for unsigned number shift operations

Arithmetic right Shift: A value that complements K's most significant bits at the left, and is used more for signed number shift operations.

- Use
**>>** for arithmetic right shift in Java, with **>>>** for logical right Shift
**Shift operation priority is less than arithmetic operation**

§2 integer Representation

First, the integer data type

Integer data type--integers representing a limited range

To use the "long Long" type in ISO C99, compile with gcc-std=c99

Two, unsigned number encoding

An important property of the binary representation of an unsigned number: 0-(2^w)-1 each integer and a bit vector with a length of W are one by one corresponding

Three, complementary code

Complement range: -2^ (w-1) ~2^ (w-1)-1

Each number within the range of values that can be represented has a unique W-bit complement code

- Other representations of signed numbers: Anti-code, original code

**The complement uses the length of the register as a fixed feature to simplify the mathematical operation**

Iii. conversions between signed and unsigned numbers

Coercion type conversions: Results hold the bit values unchanged, just changing the way that these bits are interpreted

function u2t: From unsigned number to complement; T2U: from complement to unsigned number

Signed and unsigned numbers in the C language

Unsigned constant: suffix character u or u

1. Conversion principle: The underlying bit remains the same

(1) signed number → unsigned number

Non-negative--remains the same

Negative number--converts to a large positive number

(2) unsigned number → signed number

With 2^* (w-1) as the boundary:

Less than it--remains the same

Greater than--converted to a negative value

[0,2^ (W-1)) in the range of numbers, unsigned and complementary expression of the same, outside the range, need to add or subtract 2^w

2. If there are both signed and unsigned numbers at the time of operation, the signed number coercion type is implicitly converted to the unsigned number, and the two numbers are assumed to be non-negative.

Vi. extending the bit representation of a number

Extension: Converts from a smaller data type to a larger data type while keeping the value constant.

1.0 Extension: Add 0 at the beginning. Many are used to convert unsigned numbers to a larger data type.

2. Symbol extension: Add a copy of the most significant bit. More for complement digital conversions

VII. Truncation

Truncation: Reduces the number of digits that represent a number. Doing so may change its value, which is also a form of **overflow** .

When the number of a w bit is truncated to a K-bit number, the high w-k bit is discarded.

- For
**unsigned** numbers, it's equivalent to the K-Power of MoD 2.
- For
**signed** numbers, the number of unsigned numbers is truncated before being converted to the signed number

Viii. Summary

The unsigned number is applied to a set of bits without any numeric meaning, such as an address, or when a number is represented by an array of words when a modulo operation or a multi-precision operation is implemented.

§3 integer Arithmetic

One, unsigned addition (modulo operation)

Equivalent to calculation and mod2^w, directly discarding the highest bit represented by the w+1 bit of x+y

Second, complement addition

Essence: Modulus of the W-position of the complement of the most significant bit weights 2 of the power of W

Result: positive overflow, normal, negative overflow

- The sum of the two-digit W-complement is identical to that of the unsigned sum with the same bit-level representation

Three, the complement of non-

x=-2^ (w-1), -2^ (w-1)

x>-2^ (W-1), the-X

- A bit-level representation of the complement:

For each one, then the result +1

Set K to the right of the 1 position, the K to the left of all the bits to take the reverse

Four, unsigned multiplication

Calculating the product model 2

Five, complement multiplication

Truncates the product of the 2w bit to w bit. That is, you need the power of the MoD 2 watts.

**For unsigned and complement multiplication, the bit-level representation of the multiplication is the same**

Six, multiplied by constant

Multiplication instructions are slow, while addition and displacement are relatively fast. So in the compiler, a combination of shift and addition operations is used instead of multiplying the constant factor

- When the constant is 2, the K-Power is: Shift the K-bit directly to the left.

- When a constant is not an integer power of 2, a constant c is represented as a sum of several integral powers of 2, combined with shift operations and addition operations.

**Overflow** **does not affect the result. **

Seven, the power of dividing by 2

Multiplication is slower than Fabienne. When the divisor is an integer power of 2, it is resolved by moving right

- Unsigned number-Logical right Shift

The unsigned number is divided by the K power of 2, which is equivalent to moving the K-bit to its logical right.

- Complement--Arithmetic right shift

Complement the arithmetic left shift, you need to consider the complement number of positive and negative, positive numbers rounded down to zero, negative numbers should be rounded up to zero. So here comes the bias before the shift, i.e.:

X≥0, the X-arithmetic right shifts the K-bit

x<0, first x Plus (2^k)-1, and then the arithmetic right shift K-bit

Viii. Summary

The "integer operation" performed by the computer is actually a modulo operation.

Whether the operands are expressed in unsigned or complementary form, there are exactly the same or very similar bit-level behavior.

§4 floating Point

A floating-point representation encodes a **rational number** of shapes such as V=x x (2^y) for very large numbers, numbers that are very close to 0, or as approximations to real operations

Pay less attention to accuracy, attention to speed and simplicity

One or two decimal

Represents a number as a shape such as x/(2^K): writes x as a binary and inserts a binary decimal point into the K position from the right

Second, IEEE floating point representation

1.IEEE floating point Standard:

Use v= ( -1) ^s*m*2^e to represent a number:

Symbol: s Determines whether the number is positive or negative. 0 The sign bit special case processing.

Order code: E to the floating-point weighting, the weight is 2 of the e-power (may be negative)

Mantissa: M is a binary decimal with a range of 1~2-ε or 0~1-ε (n-Power of Ε=1/2

2. Coding rules:

Individual sign bit s coded symbol S, accounting for 1 bits

K-Bit Order field exp coded Order E

N-bit decimal segment Frac encoded Mantissa m (the value of the dependent order field is also required to be 0)

3. Two types of accuracy

Single precision (float), k=8 bit, n=23 bit, altogether 32 bits;

Double precision (double), k=11 bit, n=52 bit, altogether 64 bits.

4. Three Encoding cases

That is, the EXP bit mode is not all 0 or 1, this is the most general and most common situation, and thus is normalized.

(1) Order fields and order codes

Here is a signed integer in the form of a biased representation.

Order E = E-bias

bias=[2^ (K-1)-1]

(2) Small digits and mantissa

The binary decimal point is to the left of the most significant bit of the small number segment.

Mantissa m = 1+f*(implied with 1-prefaced representation)*

That is, the Order field is a total of 0 o'clock.

(1) Order code

Order E = 1-bias

(2) Mantissa

Mantissa m = f*(the value of the small number field, not containing the implied 1)*

(3) Non-normalized function:

A. Provides a method for representing a value of 0.

B. Represents those very close to 0 of the number. Gradually overflow

The special value appears when the order code bit is all 1. There are two types of situations:

(1) Infinity: Small number segments are all 0

(2) Nan is not a number

Small number field not 0

The result of some operations cannot be a real number or an infinite value when it is returned. or represents uninitialized data.

Third, rounding

**rounding:** finds the closest matching value x ' to the value x ', which can be expressed in the desired floating-point form.

1. Rounding to even (default method)

That is, the number is rounded up or down, and the lowest valid number of the result is even. ( **four six in, five mating** )

Can be used in binary decimals.

2. Rounding to 0

That is, rounding down integers and negative numbers rounded up.

3. Rounding Down

Both positive and negative numbers are rounded down.

4. Rounding up

Both positive and negative numbers are rounded up.

Iv. floating-point arithmetic

1. Floating-point addition

Floating-point addition is exchangeable

Floating point addition not binding

The floating-point addition of most values has an inverse, except for infinity and Nan.

Floating-point addition satisfies monotonicity

2. Floating-point multiplication

Floating-point multiplication is exchangeable

Floating-point multiplication does not have tuberculous

The unit of floating-point multiplication is 1.0

Floating-point multiplication is not assignable on addition

Satisfying monotonicity under certain conditions

Floating-point numbers in the C language

- Conversion of int, float, double

Int→float will not overflow but may be rounded

Int/float→double results retain exact values

Double→float may overflow to ±∞ and may be rounded due to small accuracy

The float/double→int rounds to 0 and can overflow.

Problems encountered:

1. Error in compiling the 28-page code in the book

Check the code seems to be nothing wrong, do not know why ... at last, I commented out the line . The source code is as follows

2. Exercise 2.52 do not understand, I hope the teacher can explain in class

Information Security system Design Fundamentals third Week study summary