MSc Computer Systems Draft Teaching Plan Hardware Section



Download 224.19 Kb.
Page3/3
Date20.10.2016
Size224.19 Kb.
#6687
1   2   3

7 Input and Output I/O
How do we get information into and out of a computer? There are two main techniques, Serial I/O and Parallel I/O.
Parallel is the easiest to consider first. Data is transferred between the CPU and memory using the DATA BUS. A Data Bus is no more than 8, 16 or 32 wires in parallel. A PARALLEL PORT is an electrical interface to this bus, instead of the data being presented to a memory location it is instead presented to a series of contacts on a connector. For example a printer port on a PC is a parallel interface – 8-bits of data from the data bus are put onto the pins of the printer connector, another wire called the strobe is asserted to inform the printer that another character is available for it to read. Parallel ports can be uni-directional (as just described), or bi-directional which means that data can be transferred in both directions using the same connections.
Parallel connections are very fast, because each bit of data has its’ own wire to move along. They are not practical for long distances, not least because of the cost of the cabling.
For long distances we use SERIAL I/O. Examples of serial I/O are a PC’s COM PORTS, USB, FireWire and Ethernet. Today we will only consider Serial I/O.
A PC’s COM port conforms to the CCITT V24 standard, better known as RS232. Instead of sending out all data bits at the same time, we clock them out individually one after the other over a single wire – thus the name Serial I/O. Each character is ENCAPSULATED between a START BIT (0) and a STOP BIT (1).
7.1 Direct Memory Access DMA
Serial and parallel I/O both require direct intervention by the CPU, by means of a suitable programme (often called Drivers in PCs). An alternative technique is to use DMA.
DMA is a technique that allows data to be moved into and out of memory without any intervention by the CPU. It can be achieved in a number of different ways. An external DMA Controller can take over the CPUs data bus, effectively locking the CPU out of memory. Whilst the CPU is locked out the DMA controller can perform the memory transfer.
Another technique is known a ‘cycle stealing’ – the CPU only accesses memory when it needs to (i.e. to get the next op-code or to retrieve data), whilst it is not using the memory the DMA controller is allowed access.
8 INTERRUPTS
In an ideal world the occurrence of events, and the actions that need to be taken, can be planned for and scheduled into a nice clean multi-tasking multi-use operating system. However we all know that that is not the real world.
External events can, and will, occur whenever they want to, and the computer must react to them within a specified time. For example we may have an electronic control unit (ECU) for a car, that measures road speed and updates the driver's speedometer. To achieve this the time of arrival of pulses from the road speed sensor must be logged almost immediately (depending upon the accuracy required) whatever the processor may be doing. So the processor must suspend its’ current operation, and pass control immediately over to the road speed sensor function. The processor is INTERRUPTED by the external event, which takes over control of the processor and all its’ resources.
8.1 Examples of Interrupts
In the simplest of systems there will normally be at least two possible interrupt sources. One will be an EXTERNAL INTERRUPT, and the other will be a TIMER INTERRUPT.
8.1.1 External Interrupts
As its’ name implies an external interrupt, is a hard wired signal taken to the processor from an external source. This could be, for example, a pulsed input from an external frequency source, or a crash sensor on a car. This signal is usually digital, and the interrupt is triggered when that signal changes state. External interrupts can be either LEVEL SENSITIVE or EDGE SENSITIVE.
Edge sensitive signals detect a change of state, e.g. high to low or low to high. Level sensitive signals are sensitive to a high or a low level. Edge sensitivity is more commonly used as level sensitivity can cause multiple interrupts to occur from the same source.
External interrupts are also classified as MASKABLE or NON MASKABLE. A maskable interrupt is one that can be enabled and disabled by software, which means that the processor is capable of accidentally switching it off should there be a software error.
Maskable interrupts are usually used for processing expected external signals, such as limit switches, frequency signals, and peripheral requests for attention. In all these examples it is of advantage to the programmer to be able to disable the interrupt source, e.g. there is no point allowing an interrupt to occur during an initialisation or idle phase.
But what if the interrupt is an emergency warning signal, such as a crash sensor, or watchdog time-out. Fail safe procedures are degraded if it is possible for faulty software to switch off the alarm signals, therefore NON MASKABLE INTERRUPTS must be used for such signals.
TYPES OF EXTERNAL INTERRUPT
RISING EDGE SENSITIVE

FALLING EDGE SENSITIVE

HIGH LEVEL SENSITIVE

LOW LEVEL SENSITIVE


Any of which can be MASKABLE or NON MASKABLE
8.1.2 Timing Interrupts
Timing interrupts are generated internally by the processor itself. An independent digital divider circuit uses the processor clock as timing source. This divider is can be set up by the programmer to divide the main clock source down to give a slower timebase. Simple processors usually offer only a binary division (i.e. by 128 or 256 etc.), more expensive devices (i.e. £2 or more) offer a division register, typically 16 bits wide, but sometimes only 8 bits. When this register counts down to zero an interrupt is issued to the processor.
So for example if we are using a 4 MHz clock, and we need a 10 ms time base the divider register would be loaded with 40000. 4 MHz / 40000 = 100 Hz that is 10 ms.
One thing to look out for is whether or not the timer automatically reloads the division ratio. Some processors do this (e.g. INTEL 8051 FAMILY, but only 8 bit reload), most DO NOT, therefore the timer will need to be reloaded on every occurrence of the interrupt.
Another trap that is waiting for you is the fact that sometimes the divider COUNTS UP and not down, issuing the interrupt when the register rolls over from FFFF to 0000. In this instance you will need to preload the divider with the complement of the number that you wish to divide by, i.e. 65536 - DIVISION RATIO.
TYPES OF TIMING INTERRUPT
UP COUNTER Interrupt when register changes from full (FFFFH or FFH) to zero

DOWN COUNTER Interrupt when register changes from 1 to zero


TYPES OF DIVISION

BINARY DIVISION Can only divide by 2/4/8/16/32/64/128 etc

8 BIT DIVISION Counter is only 8 bits wide, so can divide by 1 to 255

16 BIT DIVISION Counter is 16 bits wide, so can divide by 1 to 65535

AUTOMATIC RELOAD Counter automatically reloads a fixed number on interrupt

8.1.3 Serial Interrupts


Most reasonable processors include at least one, and possible two serial communications devices on the chip. One will be an asynchronous port, for use with an RS232 or RS485 driver, and the other will be some form IIC/SPI driver.
As such links are often quite slow with respect to the processor, an interrupt is an essential requirement. When data is received by a serial device it will issue a RECEIVER FULL interrupt, and when it is ready to transmit data it will issue a TRANSMITTER EMPTY interrupt.
Normal software practice is to implement a cyclic buffer under interrupt control for both the receiver and transmitter sections. The background process can then examine the size of the RECEIVE BUFFER to see if any data has arrived, or put a character into the SEND BUFFER for interrupt processing.
The main dangers with this approach are as follows -
RECEIVER - the RECEIVE BUFFER must be polled, and emptied, by the background faster than data arrives, else the buffer will overrun.
TRANSMITTER - when there is no data left to send the TRANSMITTER EMPTY INTERRUPT must be disabled, otherwise it will hang up the processor forever.
8.1.4 Watchdog Interrupts
Watchdogs are used to provide system integrity. They are timing devices, often located externally to the processor, but sometimes they are included on the chip itself. They act like an alarm clock, as long as they are RESET by the processor at regular intervals they never time-out. If the processor dies, or gets lost in some obscure section of code that has been poorly designed, then the timer does times out, and it issues an interrupt.
Internal devices, as can be found on the PIC family, the Motorola 68HC11 family and some advanced 8051 type devices, use an internal interrupt or force a complete processor reset. External watchdog devices (available from many manufacturers - such as DALLAS and MAXIM) provide a digital output that the designer can either use to RESET the processor or cause an EXTERNAL interrupt.
The simplest method of using such a device is to set the ‘time-out’ to be longer than the complete programme cycle; then at the end of the cycle a signal is sent to the watchdog to RESET its’ timer back to zero. As long as the programme is operating correctly then the watchdog will never time out. This method however cannot be used for asynchronous programmes that use interrupt functions. It is necessary to ensure that each function independently ‘kicks’ the watchdog. This can be achieved by using flags. For example, an interrupt function can set a flag indicating that it has occurred, and the background routine can examine this flag, and only if it set will it then ‘kick’ the watchdog. In this way we have proven that both functions have been executed within the desired time.
8.1.5 Power Fail Interrupts
It would be helpful if the processor had advanced warning of an impending power failure, in order that it can gracefully close down all current operations and protect its’ memory. This is achieved by the use of power fail interrupts, which are to be found in a number of advanced microcontrollers. They work by monitoring the voltage level on the chip. If it falls below a minimum threshold it issues the interrupt call before the power falls too far for the device to operate - you then have a small amount of time do something to make everything safe and secure.
8.1.6 Software Interrupts (Traps)
A total separate group of interrupts may also exist, that are designed to ‘trap’ illegal operations. For example sections of memory may be designated as protected, perhaps because it is designated as the stack, or we may try to perform a hardware divide by zero. Illegal operations such as these can cause an interrupt, so that some form of housekeeping software can be invoked to tidy up the mess.
8.2 Vectors & Saving the Processor Status
If we have so many different types of interrupt how can the processor distinguish between them ?
This is achieved by an INTERRUPT VECTOR TABLE. The vector table is located at a fixed location in the code space, typically at the bottom of code space (location 0000 to 00FF) or at the top of the code space (FF00 to FFFF). Each interrupt has a fixed location in the vector table for its’ own use, into which must be stored the starting address of its’ unique interrupt function.
When any interrupt occurs, the processor stops running whatever function is currently operating, and executes a SUBROUTINE CALL to the address stored in the vector. Therefore the minimal interrupt code must be a single RETURN instruction, so control will then return back to the interrupted function -
However to ensure that an interrupt cannot itself be interrupted, it is usual for all other interrupts to be disabled whilst any interrupt function is being executed. As the interrupt may wish to call subroutines, a special type of return is used that signals to the processor that interrupts can now be reenabled. In the INTEL family of devices this opcode is RETI, MOTOROLA uses the opcode RTI for the same purpose.
e.g. For an Intel 8051
code address 0000 reset vector

0003 external interrupt (say 0100) >>>>>>>>>>>>>>>>>>>>>>

000B timer 0 overflow interrupt |

0013 external interrupt 1 |

001B timer 1 overflow |

0023 serial interrupt |

| | |

|

|



|

|

0100 Start of EXT0 interrupt function <<<<<<<<<<<<<<<<<<<|



RETI

We are also using the processors internal resources, and data that was resident in its’ registers must be saved before the interrupt code is executed, otherwise they may destroyed. This is achieved by pushing the contents of any registers used by the interrupt function onto the stack, and restoring them before executing the return operation. e.g.


0100 Start of EXT0 interrupt function

PUSH A ; SAVE REGISTER A

PUSH B ; SAVE REGISTER B

PUSH DPH ; SAVE DATA POINTER

PUSH DPL ; SAVE DATA POINTER

INTERRUPT CODE CAN NOW USE REGISTERS A/B/DPH AND DPL

POP DPL

POP DPH


POP B

POP A


RETI
All this pushing and popping takes time, and interrupts must be quick, so only save the contents of registers that are used by the interrupt routine.
What about our processor status flags, these are not registers but represent the state of the machine at the time the interrupt occurred. For example what was the state of the ZERO and CARRY flags, if they are not correctly restore then any subsequent conditional branch operation in the interrupted routine will fail. These flags must be saved as well, and special instructions are always present to allow this to be done.
0100 Start of EXT0 interrupt function

PUSH PSW ; SAVE PROCESSOR STATUS

PUSH A ; SAVE REGISTER A

PUSH B ; SAVE REGISTER B

PUSH DPH ; SAVE DATA POINTER

PUSH DPL ; SAVE DATA POINTER

INTERRUPT CODE CAN NOW USE REGISTERS A/B/DPH AND DPL

POP DPL


POP DPH

POP B


POP A

POP PSW


RETI
So to summarise an interrupt must cause the following to happen
* THE CURRENT PROGRAMME COUNTER ADDRESS MUST BE PUSHED ONTO THE STACK

* THE START OF THE INTERRUPT FUNCTION MUST BE READ FROM THE INTERRUPT VECTOR TABLE

* THE PROCESSOR STATUS WORD MUST BE SAVED ON THE STACK

* THE CONTENTS OF ALL REGISTERS USED BY THE INTERRUPT MUST BE SAVED ON THE STACK

* EXECUTE THE INTERRUPT CODE

* RESTORE THE SAVED REGISTERS

* RESTORE THE PROCESSOR STATUS WORD

* REENABLE INTERRUPTS EXPLICITLY, OR IMPLICITLY WITH A SPECIAL RETURN

* RETURN TO THE CALLING FUNCTION
9 My PC
So how does all the above relate to the PC on your desk?
9.1 The CPU and MOTHERBOARD
Most of the above hardware will be found on the ’motherboard’ of your PC. The Central Processing Unit (e.g. a Pentium) contains the ALU, the instruction fetch and execute logic, the pipeline, the flags, the registers, the timing circuitry, the stack pointer, the programme counter and the data pointers.
Close to the CPU will be found the Cache, which is fast dynamic RAM. Also on the motherboard you will find the main memory, the address bus and data bus, and probably some of the I/O devices.
Now some terminology. So far we have referred to the address bus and the data bus; there is also a control bus that includes control lines such as ‘read from memory’ or ‘write to memory’. Collectively these are called the xxx BUS, where xxx may be ISA or PCI or VME or whatever BUS standard this particular computer manufacturer has chosen to use.
9.2 Memory
Backup memory is provided for by hard disk drives, floppy disk drives and CD-ROMs. All three of these devices have file structures that are created and managed by the computer’s Operating System or OS. Other types of backup media, such a Zip drives, do not use the OS file structure.
9.3 I/O
Serial communication can be obtained via a COM port, or a USB port.
COM ports use the RS232/V24 asynchronous communication standard. PC manufacturers are trying to get rid of them, but they are extensively used in telecommunications and will not become obsolete despite some ridiculous claims by the mass-market PC manufacturers. A typical use for a COM port is to connect to a dial-up MODEM – they are also used to connect to ‘Packet Switch Networks’ such as an X-25 PAD (Packet Assembler and Dis-assembler), and the mobile phone network via GSM MODEMS.
USB ports are a high speed serial standard, now widely used to connect a range of peripheral devices to a PC. Currently, the USB Specification, Revision 2.0, covers three speeds 480 Mbps, 12 Mbps, and 1.5 Mbps. The term "Hi-Speed USB" refers to just the 480 Mbps portion of the USB Specification. We now use the term "USB" to refer to the 12Mbps and 1.5Mbps speeds.

See http://www.intel.com/technology/usb/faq.htm for more information.


You make also come across the concept of ‘networking’. A network is a cabling system that connects a group of computers together into as ‘Network’. This allows users at on computer to access resources and files on other computers that are connected to that network. It is the job of the OS to allow users to apply ‘attributes’ to the files and directory structures in order to allow or bar other users from accessing their data.
ETHERNET is an example of networking standard that allows messages to be moved from one computer to another; it is not a complete networking solution, as it does not offer any form a file management. You may have also heard of Novell – this is a network standard that can overlay Ethernet, and provides the ‘networking’ layer that is lacking in Ethernet. There are other standards available.
PCMCIA slots are very popular on portable PCs. These are in effect a collapsed BUS, that allows developers to design slim-line peripherals that can by plugged into the computer to provide a new facility, such as extra memory or a MODEM.
All PC’s have a parallel port, which is usually used as a printer connection.
9.4 Human Machine Interfaces
As a minimum these will be a screen, keyboard and a mouse.
Screens come in two main technologies, CRTs (cathode ray tubes) and LCDs (liquid crystal displays). CRTs are big and bulky, and use the same technology as a TV – three different coloured spot sources (Red Green and Blue) are scanned across the screen. The more lines that your CRT can scan the better the vertical resolution. TVs have 625 lines, but in practice some of these are blank, and as the image is ‘interlaced’ the effective resolution is halved to about 300 lines. As each spot is scanned across your screen its’ intensity is changed. The speed at which this happens determines the horizontal resolution.
So a screens overall resolution is defined in terms of (horizontal spot changes per line) x (total number of lines). A basic VGA screen offer 640 x 480 resolution, which means that there are 480 lines, each with 640 horizontal dots. Each dot is known as a Picture Cell, or Pixel for short.
LCDs are made of individual dots, each of which can be switched on or off. You may be able to see them if you look closely at an LCD or Plasma screen.
Keyboards are matrix-scanned devices, which converts each key depression into an 8-bit character (not ASCII) or a 16-bit character pair. This information is transmitted to the PC using a serial standard called Keyboard Wedge. Other devices that use the keyboard wedge standard are barcode scanners, infrared sensors and RFID (radio frequency ID) sensors.
Mice can use a variety of techniques, USB, serial or keyboard wedge.
10 C Programming Language
This section is not a complete introduction to C; such information can be found from a variety of sources at DMU. It is intended only to relate some C language concepts to material that we have already covered.
10.1 Data Types
At the beginning of these notes we referred to different lengths of binary bits that are used to represent numbers. The names that we used were BIT, NIBBLE, BYTE & WORD. Numbers can unsigned or signed. Later on we discovered how floating point numbers are represented.
In the C programming language most of these methods of representing numbers can be found. They are known as DATA TYPES.
An 8-bit variable is known as a char. It can be signed or unsigned. We can create a char variable for use in our programme by declaring a variable. The programme line -
char x ;
will create an 8-bit variable that is called ‘x’. In this case it will be a signed variable, as that is the default. So x can have a numeric value in the range –128 to +127.
If instead we wanted an unsigned variable it would be declared as -
unsigned char y ;
This creates an 8-bit variable that is called ‘y’. It will be an unsigned variable. So y can have a numeric value in the range 0 to 255.
16-bit variables are declared using the data type int.
int x ;
Will create a 16 bit signed variable, with a numeric range of –32268 to + 32267.
unsigned int x ;
Will create a 16 bit signed variable, with a numeric range of 0 to 65535.
C also supports a 32-bit variable type, which used to be known as a long int, but is now just known as long.
long x;
Will create a 32-bit signed variable, with a numeric range of –2147483648 to +214748367.
unsigned long x ;
Will create a 16-bit signed variable, with a numeric range of 0 to 4294967296.
C also supports two floating point variables types.
float x ;
Will create a 32-bit floating point variable that has an 8-bit exponent and a 24-bit mantissa.
double x ;
Will create a 64-bit floating point variable that has a 16-bit exponent and a 48-bit mantissa.

10.2 Operators
C supports are range of mathematical and logical operators. Most of which are self explanatory. The maths operators are
+ - / *
For Addition Subtraction Division and Multiplication. The usual BODMAS rules apply, which means that multiplication & division take precedence over addition and subtraction; but it is best to use brackets to ensure that you get the correct mathematical operation.
The logical operators are
& | ^ !
For And Or Exclusive-Or and Not
The logical operators should not be confused with the interrogative operators that are used to build conditional statements
&& || ~
These interrogative operations will be explained later.


Numerical Representation Exercises
1 Convert the decimal number 98 into Binary, Octal and HEX
Method

First convert the number in BINARY

An 8-bit Binary polynomial has columns with the following values -

128 64 32 16 8 4 2 1

Which are derived from the exponents of the power of 2.

20 = 1

21 = 2

22 = 4

23 = 8

24 = 16

25 = 32

26 = 64

27 = 128

So now we build up the binary number column by column


As 98 < 128 the 128th column is zero

128 64 32 16 8 4 2 1

0 ? ? ? ? ? ? ?
Now we try the 64th column

As 98 > 64 we set the 64th column to a 1 and subtract 64 from our number

128 64 32 16 8 4 2 1

0 1 ? ? ? ? ? ?

98 - 64 = 34
Now we try the 32nd column

As 34 > 32 we set the 32nd column to a 1 and subtract 32 from our number

128 64 32 16 8 4 2 1

0 1 1 ? ? ? ? ?

34 - 32 = 2
Now we try the 16th column

As 2 > 16 we set the 16th column to a 0

128 64 32 16 8 4 2 1

0 1 1 0 ? ? ? ?


Now we try the 8th column

As 2 > 8 we set the 8th column to a 0

128 64 32 16 8 4 2 1

0 1 1 0 0 ? ? ?


Now we try the 4th column

As 2 > 4 we set the 4th column to a 0

128 64 32 16 8 4 2 1

0 1 1 0 0 0 ? ?


Now we try the 2nd column

As 2 = 2 we set the 2nd column to a 1

128 64 32 16 8 4 2 1

0 1 1 0 0 0 1 ?

2 -2 = 0
As our remainder is 0 the last column must be 0

128 64 32 16 8 4 2 1

0 1 1 0 0 0 1 0
So 98 DECIMAL = 01100010 BINARY
Which is another way of saying that

98 = 128x0 + 64x1 + 32x1 + 16x0 + 8x0 + 4x0 +2x1 + 1x0


Now we can convert our binary number into HEX and OCTAL equivalents

To create HEX equivalents we group the binary digit into groups of 4 bits

01100010 = [0110] [0010]

Our HEX number system has 16 different digits -


HEX BINARY DECIMAL

0 0000 0


1 0001 1

2 0010 2


3 0011 3

4 0100 4


5 0101 5

6 0110 6


7 0111 7

8 1000 8


9 1001 9

A 1010 10

B 1011 11

C 1100 12

D 1101 13

E 1110 14

F 1111 15
So using our table above

[0110] = 6

[0010] = 2
So our HEX value is 62H NOTE THE H SUFFIX USED TO DENOTE THAT THIS IS A HEX NUMBER
Which is another way of saying that 98 = 6x16 + 2x1
Our OCTAL number system has 8 different digits -
OCTAL BINARY DECIMAL

0 000 0


1 001 1

2 010 2


3 011 3

4 100 4


5 101 5

6 110 6


7 111 7
To create our OCTAL number we group together three bits.

So using our table above

[001] = 1

[100] = 4

[010] = 2
So our OCTAL value is 142O NOTE THE O SUFFIX USED TO DENOTE THAT THIS IS AN OCTAL NUMBER
Which is another way of saying that 98 = 1*64 + 4*8 + 2*1
2 Convert the following decimal numbers into BINARY HEX AND OCTAL
65

247


17

33

160


3 Convert the following numbers into decimal
A7H

0AH


80H

220H
220O

777O

101O
01011100B



11000000B

01010101B


4 Multiply the following in binary, showing all your working
100101B x 101B

101000B X 1010B


5 Divide the following in binary, showing all your working
1001000B / 100B

1010001B / 10B


6 Perform the following multiplications in HEX
3H x 2H

8H x 2H


8H x 3H

10H x 10H


7 Perform the following Divisions in HEX
1476H / 10H

80H / 4H


C0H / 4H

100H / 8H


8 Convert the following decimal numbers into 8-bit 2’s complement binary notation
-1

-10


-127

-33
NUMERICAL REPRESENTATION KEY TUTORIAL QUESTIONS




  1. Draw up a table that shows the relationship between the first 16 numbers, counting from

zero, expressed as decimal, hexadecimal, octal and binary.

2. How many binary bits are there in the following number ‘types’

NIBBLE
BYTE
WORD

3. What is the largest decimal number that can be represented by 8 binary bits?

4. What is the largest decimal number that can be represented by 16 binary bits?

5. What is the largest decimal number that can be represented by 10 binary bits?

6. What is the decimal equivalent of 1k?

7. What is the approximate decimal equivalent of the maximum number represented by 20

binary bits?

8. Convert the following decimal numbers into binary

45
129
53
195
9. Convert the following binary numbers into HEX

00101101


10000001
00110101
11000011

10. Convert the following decimal numbers into HEX

65
127
245
9

(Hint – convert the decimal into binary, and then convert the binary into HEX)

11. Convert the following signed 8 bit –ve binary numbers into their –ve equivalents

00000001


00110011
01010101
01111110

12. What is the binary representation of the following –ve numbers, express your answer

using 8 bits.

-1
-128


-17
-53

(Hint – first convert the +ve value into binary, then use the 2’s complement conversion

technique to create the –ve binary equivalent number)

13. Convert the following HEX numbers into OCTAL

17
31
9
11

13. Convert the following HEX numbers into OCTAL

1A
3C
09
17

(hint – convert the HEX into binary, and then convert the binary into OCTAL)

14. Complete the following HEX sums, assuming that we are using signed 8-bit arithmetic

80 – 0A
15 + 95


05 – 07
1A + C7

15. What is the numeric range of 8 binary bits if we are using unsigned notation?

16. What is the numeric range of 8 binary bits if we are using signed notation?

17. What is the numeric range of 16 binary bits if we are using unsigned notation?

18. What is the numeric range of 16 binary bits if we are using unsigned notation?

19. Approximately how many memory locations can be addressed by a 24-bit address bus?

20. Complement the following binary numbers

01010101


11110000
10101111
00001000

21. Negate the following binary numbers

01010101
11110000
10101111
00001000

22. What is the format of a floating-point number? What is meant by the terms MANTISSA



and EXPONENT?




Download 224.19 Kb.

Share with your friends:
1   2   3




The database is protected by copyright ©ininet.org 2024
send message

    Main page