# G.1 Number Systems

#### Binary, Octal, and Hexadecimal Number System

Table G.1 lists the integers from 0 to 16, showing their equivalents in the binary (base 2), octal (base 8), and hexadecimal (base 16) number systems. The shaded cells in each column show the digits in each number system.

##### Table G.1. Number Systems

Decimal (base 10)

Binary (base 2)

Octal (base 8)

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

a

11

1011

13

b

12

1100

14

c

13

1101

15

d

14

1110

16

e

15

1111

17

f

16

10000

20

10

In addition to the decimal literals, Java also allows integer literals to be specified in octal and hexadecimal number systems, but not in the binary number system. Octal and hexadecimal numbers are specified with 0 and 0x prefix, respectively. The prefix 0X can also be used for hexadecimal numbers. Note that the leading 0 (zero) digit is not the uppercase letter O. The hexadecimal digits from a to f can also be specified with the corresponding uppercase forms (A to F). Negative integers (e.g., -90) can be specified by prefixing the minus sign (-) to the magnitude, regardless of number system (e.g., -0132 or -0X5A). The actual memory representation of the integer values is discussed in Section on page 598.

#### Converting Binary Numbers to Decimals

A binary number can be converted to its equivalent decimal value by computing the positional values of its digits. Each digit in the binary number contributes to the final decimal value by virtue of its position, starting with position 0 (units) for the right-most digit in the number. The positional value of each digit is given by

digit x base position

The number 1010012 corresponds to 4110 in the decimal number system:

 1010012 = 1x25 + 0x24 + 1x23 + 0x22 + 0x21 + 1x20 = 32 + 0 + 8 + 0 + 0 + 1 = 4110

#### Converting Octal and Hexadecimal Numbers to Decimals

Similarly, octal (base 8) and hexadecimal (base 16) numbers can be converted to their decimal equivalents:

 0132 = 1328 = 1x82 + 3x81 + 2x80 = 64 + 24 + 2 = 9010 Octal Decimal 0x5a = 5a16 = 5x162 + ax160 = 80 + 10 = 9010 Hex Decimal

The same technique can be used to convert a number from any base to its equivalent representation in the decimal number system.   List of Figures  List of Tables  List of Examples  Foreword  Preface  Chapter 1. Basics of Java Programming  Chapter 2. Language Fundamentals  Chapter 3. Operators and Assignments  Chapter 4. Declarations and Access Control  Chapter 5. Control Flow, Exception Handling, and Assertions  Chapter 6. Object-oriented Programming  Chapter 7. Nested Classes And Interfaces  Chapter 8. Object Lifetime  Chapter 9. Threads  Chapter 10. Fundamental Classes  Chapter 11. Collections and Maps  Appendix A. Taking the SCPJ2 1.4 Exam  Appendix B. Objectives for the SCPJ2 1.4 Exam  Appendix C. Objectives for the Java 2 Platform Upgrade Exam  Appendix D. Annotated Answers to Review Questions  Appendix E. Solutions to Programming Exercises  Appendix F. Mock Exam  Appendix G. Number Systems and Number Representation  G.1 Number Systems  G.2 Relationship between Binary, Octal, and Hexadecimal Numbers  G.3 Converting Decimals  G.4 Representing Integers  Appendix H. About the CD  Single-User License Agreement