csharplang/proposals/csharp-7.0/binary-literals.md
2017-02-27 12:47:39 -08:00

1 KiB
Raw Blame History

Binary Literals

Theres a relatively common request to add binary literals to C# and VB. For bitmasks (e.g. flag enums) this seems genuinely useful, but it would also be great just for educational purposes.

Binary literals would look like this:

int nineteen = 0b10011;

Syntactically and semantically they are identical to hexadecimal literals, except for using b/B instead of x/X, having only digits 0 and 1 and being interpreted in base 2 instead of 16.

Theres little cost to implementing these, and little conceptual overhead to users of the language.

Syntax

The grammar would be as follows:

integer-literal: ... binary-integer-literal

binary-integer-literal: 0b binary-digits integer-type-suffixopt 0B binary-digits integer-type-suffixopt

binary-digits: binary-digit binary-digits binary-digit

binary-digit: one of 0 1