section_path: Computer science
section_name: Computer science
paragraph_text: Computer science
  
  Modern computers store information in binary, that is, using an "alphabet" that contains only two symbols, usually chosen to be "0" and "1". Binary coding is convenient for digital electronics, where "0" and "1" can stand for the absence or presence of electrical current in a wire. Computer programmers typically use high-level programming languages that are more easily intelligible to humans than the binary instructions that are directly executed by the central processing unit. 0 plays various important roles in high-level languages. For example, a Boolean variable stores a value that is either true or false, and 0 is often the numerical representation of false.
  
  0 also plays a role in array indexing. The most common practice throughout human history has been to start counting at one, and this is the practice in early classic programming languages such as Fortran and COBOL. However, in the late 1950s LISP introduced zero-based numbering for arrays while Algol 58 introduced completely flexible basing for array subscripts (allowing any positive, negative, or zero integer as base for array subscripts), and most subsequent programming languages adopted one or other of these positions. For example, the elements of an array are numbered starting from 0 in C, so that for an array of n items the sequence of array indices runs from 0 to n −1.
  
  There can be confusion between 0- and 1-based indexing; for example, Java's JDBC indexes parameters from 1 although Java itself uses 0-based indexing.
  
  In C, a byte containing the value 0 serves to indicate where a string of characters ends. Also, 0 is a standard way to refer to a null pointer in code.
  
  In databases, it is possible for a field not to have a value. It is then said to have a null value. For numeric fields it is not the value zero. For text fields this is not blank nor the empty string. The presence of null values leads to three-valued logic. No longer is a condition either true or false, but it can be undetermined. Any computation including a null value delivers a null result.
  
  In mathematics, there is no "positive zero" or "negative zero" distinct from zero; both −0 and +0 represent exactly the same number. However, in some computer hardware signed number representations, zero has two distinct representations, a positive one grouped with the positive numbers and a negative one grouped with the negatives. This kind of dual representation is known as signed zero, with the latter form sometimes called negative zero. These representations include the signed magnitude and ones' complement binary integer representations (but not the two's complement binary form used in most modern computers), and most floating-point number representations (such as IEEE 754 and IBM S/390 floating-point formats).
  
  An epoch, in computing terminology, is the date and time associated with a zero timestamp. The Unix epoch begins the midnight before the first of January 1970. The Classic Mac OS epoch and Palm OS epoch begin the midnight before the first of January 1904.
  
  Many APIs and operating systems that require applications to return an integer value as an exit status typically use zero to indicate success and non-zero values to indicate specific error or warning conditions.
  
  Programmers often use a slashed zero to avoid confusion with the letter " O ".