Number literals let you write numbers in your code clearly and in different styles. Using underscores, hex, or binary makes numbers easier to read or match real-world formats.
When you want to write large numbers clearly, like 1_000_000 instead of 1000000.
When you need to work with colors or memory addresses, which are often shown in hexadecimal (hex).
When dealing with bits or flags, binary numbers help you see the exact bits set.
When you want to improve code readability by grouping digits logically.
When you want to match number formats used in hardware or protocols.
Syntax
Kotlin
val decimal = 1_000_000
val hex = 0xFF_EC_DE_5E
val binary = 0b1101_0101
Underscores (_) can be placed anywhere between digits to improve readability.
Hex numbers start with 0x and binary numbers start with 0b.
Examples
Underscores make the large number easier to read.
Kotlin
val million = 1_000_000
Hexadecimal number with underscores for clarity, often used for colors.
Kotlin
val color = 0xFF_EC_DE_5E
Binary number with underscores to separate bits visually.
Kotlin
val flags = 0b1101_0101
Sample Program
This program shows how to write and print numbers using underscores, hex, and binary formats.
Kotlin
fun main() {
val decimal = 1_000_000
val hex = 0xFF_EC_DE_5E
val binary = 0b1101_0101
println("Decimal: $decimal")
println("Hex: $hex")
println("Binary: $binary")
}
OutputSuccess
Important Notes
Underscores cannot be at the start or end of a number, or next to the prefix (0x, 0b).
Hex and binary literals are converted to decimal values when used in calculations or printed.
Summary
Use underscores to make numbers easier to read.
Hex numbers start with 0x and are useful for colors and memory values.
Binary numbers start with 0b and help when working with bits.
Practice
(1/5)
1. Which of the following is a valid way to write the number one million in Kotlin using underscores for readability?
easy
A. 1__000000
B. 1000_000_
C. 10__00_000
D. 1_000_000
Solution
Step 1: Understand underscore usage in Kotlin numbers
Kotlin allows underscores between digits to improve readability, but they must not be consecutive, leading, or trailing.
Step 2: Check each option for correct underscore placement
1_000_000 uses single underscores separating groups of three digits correctly. A has consecutive underscores (invalid). B has trailing underscore (invalid). C has consecutive underscores (invalid).
Final Answer:
1_000_000 -> Option D
Quick Check:
Underscores separate digits properly = 1_000_000 [OK]
Hint: Use single underscores between digit groups only [OK]
Common Mistakes:
Using double underscores
Placing underscores at start or end
Trailing underscores
2. Which of the following Kotlin number literals is NOT valid syntax?
easy
A. 123_456_
B. 0b1010_1101
C. 0x1A3F
D. 987_654
Solution
Step 1: Review Kotlin rules for underscores in number literals
Underscores can be used between digits but not at the end or start of a number.
Step 2: Check each option for trailing underscores
123_456_ ends with an underscore, which is invalid syntax. Options A, B, and D are valid hexadecimal, binary, and decimal literals respectively.
Final Answer:
123_456_ -> Option A
Quick Check:
Trailing underscore invalid = 123_456_ [OK]
Hint: Never put underscore at the end of a number [OK]
Common Mistakes:
Trailing underscores in numbers
Confusing hex prefix 0x with decimal
Misplacing underscores in binary literals
3. What is the output of this Kotlin code?
val x = 0xF_A val y = 0b1010_1010 println(x + y)
medium
A. 270
B. 250
C. 420
D. 280
Solution
Step 1: Convert hexadecimal and binary literals to decimal
0xF_A means hex FA: F=15, A=10, so 15*16 + 10 = 250. 0b1010_1010 is binary 10101010 which equals 128+32+8+2=170.
Step 2: Add the decimal values
250 + 170 = 420.
Final Answer:
420 -> Option C
Quick Check:
(0xFA + 0b10101010) = 420 [OK]
Hint: Convert hex and binary to decimal before adding [OK]
Common Mistakes:
Misreading hex digits
Incorrect binary to decimal conversion
Ignoring underscores in literals
4. Identify the error in this Kotlin code snippet:
val num = 0b1021_0010
medium
A. Underscores are not allowed in binary literals
B. Binary literals cannot contain digits other than 0 or 1
C. Binary literals must start with 0x
D. The number is too large for binary format
Solution
Step 1: Understand valid digits in binary literals
Binary literals can only contain digits 0 and 1, optionally separated by underscores.
Step 2: Check the given literal for invalid digits
The literal contains '2', which is invalid in binary. Underscores are allowed, and binary literals start with 0b, not 0x.
Final Answer:
Binary literals cannot contain digits other than 0 or 1 -> Option B
Quick Check:
Binary digits must be 0 or 1 only [OK]
Hint: Binary digits only 0 or 1, no other digits allowed [OK]
Common Mistakes:
Using digits other than 0 or 1 in binary
Confusing hex prefix 0x with binary 0b
Thinking underscores are disallowed in binary
5. You want to represent the decimal number 255 in Kotlin using a binary literal with underscores for readability. Which of the following is the best way to write it?
hard
A. 0b1111_1111
B. 0b11111111
C. 0b1111_1110
D. 0b1111_11112
Solution
Step 1: Convert decimal 255 to binary
255 in binary is 11111111 (eight ones).
Step 2: Add underscores for readability
Grouping bits in fours is common, so 1111_1111 is clearer and valid.
Step 3: Check options for correctness
0b1111_1111 correctly uses underscores and matches 255. 0b11111111 is correct but less readable. 0b1111_1110 is 254, and 0b1111_11112 has invalid digit '2'.
Final Answer:
0b1111_1111 -> Option A
Quick Check:
Binary 1111_1111 = 255 decimal [OK]
Hint: Group binary digits in fours with underscores [OK]
Common Mistakes:
Using wrong binary digits
Adding invalid digits like 2
Not grouping bits for readability
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.