Ngjashëm me mënyrën se si mund të përcaktoni një konstante numër të plotë në heksadecimal ose oktal, a mund ta bëj atë në binar?
E pranoj se kjo është një pyetje vërtet e lehtë (dhe budallaqe). Kërkimet e mia në Google po dalin bosh.
Ngjashëm me mënyrën se si mund të përcaktoni një konstante numër të plotë në heksadecimal ose oktal, a mund ta bëj atë në binar?
E pranoj se kjo është një pyetje vërtet e lehtë (dhe budallaqe). Kërkimet e mia në Google po dalin bosh.
Pra, me lëshimin e Java SE 7, shënimi binar del standard nga kutia. Sintaksa është mjaft e drejtpërdrejtë dhe e qartë nëse keni një kuptim të mirë të binares:
byte fourTimesThree = 0b1100;
byte data = 0b0000110011;
short number = 0b111111111111111;
int overflow = 0b10101010101010101010101010101011;
long bow = 0b101010101010101010101010101010111L;
Dhe konkretisht në pikën e deklarimit të variablave të nivelit të klasës si binare, nuk ka absolutisht asnjë problem në inicializimin e një ndryshoreje statike duke përdorur gjithashtu shënimin binar:
public static final int thingy = 0b0101;
Vetëm kini kujdes që të mos tejmbushni numrat me shumë të dhëna, përndryshe do të merrni një gabim përpiluesi:
byte data = 0b1100110011; // Type mismatch: cannot convert from int to byte
Tani, nëse vërtet dëshironi të jeni të zbukuruar, mund të kombinoni atë veçori tjetër të re të pastër në Java 7 të njohur si fjalë për fjalë numerike me nënvizime. Hidhini një sy këtyre shembujve të mrekullueshëm të shënimit binar me nënvizime fjalë për fjalë:
int overflow = 0b1010_1010_1010_1010_1010_1010_1010_1011;
long bow = 0b1__01010101__01010101__01010101__01010111L;
Tani a nuk është e bukur dhe e pastër, për të mos përmendur shumë të lexueshme?
I nxora këto copa kodi nga një artikull i vogël që shkrova rreth temës në TheServerSide. Mos ngurroni ta shikoni për më shumë detaje:
Java 7 dhe Shënimi Binar: Masterizimi i Provimit të Programuesit Java OCP (OCPJP)
Në Java 7:
int i = 0b10101010;
Nuk ka literale binare në versionet më të vjetra të Java (shih përgjigjet e tjera për alternativat).
_
karaktere për ta bërë sekuencën më të lexueshme: int i = 0b1010_1010_0011;
09.03.2012 Nuk ka fjalë binar në Java, por supozoj se mund ta bëni këtë (megjithëse nuk e kuptoj pikën):
int a = Integer.parseInt("10101010", 2);
byte b = 0b01000001
(për një gatishmëri më të mirë byte b = 0b0100_0001
). 15.08.2017 Përgjigja nga Ed Swangren
public final static long mask12 =
Long.parseLong("00000000000000000000100000000000", 2);
punon mirë. Kam përdorur long
në vend të int
dhe shtova modifikuesit për të sqaruar përdorimin e mundshëm si një maskë bit. Megjithatë, ka dy shqetësime me këtë qasje.
Unë mund të sugjeroj një qasje alternative
public final static long mask12 = 1L << 12;
Kjo shprehje e bën të qartë se biti i 12-të është 1 (numërimi fillon nga 0, nga e djathta në të majtë); dhe kur rri pezull kursorin e miut, këshilla e veglave
long YourClassName.mask12 = 4096 [0x1000]
shfaqet në Eclipse. Ju mund të përcaktoni konstante më të ndërlikuara si:
public final static long maskForSomething = mask12 | mask3 | mask0;
ose në mënyrë eksplicite
public final static long maskForSomething = (1L<<12)|(1L<<3)|(1L<<0);
Vlera e ndryshores maskForSomething
do të jetë ende e disponueshme në Eclipse në kohën e zhvillimit.
Deklaroni konstante:
public static final int FLAG_A = 1 << 0;
public static final int FLAG_B = 1 << 1;
public static final int FLAG_C = 1 << 2;
public static final int FLAG_D = 1 << 3;
dhe t'i përdorin ato
if( (value & ( FLAG_B | FLAG_D )) != 0){
// value has set FLAG_B and FLAG_D
}
Kërkoni "Sintaksën e fjalëve të fjalës Java" në Google dhe do të gjeni disa hyrje.
Ekziston një sintaksë oktale (prefiksoni numrin tuaj me 0), sintaksë dhjetore dhe sintaksë heksadecimal me një parashtesë "0x". Por nuk ka sintaksë për shënimin binar.
Disa shembuj:
int i = 0xcafe ; // hexadecimal case
int j = 045 ; // octal case
int l = 42 ; // decimal case
byte b = 0b01000001
(për një gatishmëri më të mirë byte b = 0b0100_0001
). 15.08.2017 Nëse doni të ngatërroni me shumë binare, mund të përcaktoni disa konstante:
public static final int BIT_0 = 0x00000001;
public static final int BIT_1 = 0x00000002;
etj.
or
public static final int B_00000001 = 0x00000001;
public static final int B_00000010 = 0x00000002;
public static final int B_00000100 = 0x00000004;
Përgjigje pak më e çuditshme:
public class Main {
public static void main(String[] args) {
byte b = Byte.parseByte("10", 2);
Byte bb = new Byte(b);
System.out.println("bb should be 2, value is \"" + bb.intValue() + "\"" );
}
}
cilat dalje [java] bb duhet të jenë 2, vlera është "2"