2017-04-17 18 views
0

我想声明一个以字节为单位的整数。 我的意思是:我试图将int a = 4声明为int a = 0100(为简单起见,我将它缩短为4位)。 以下是我使用过的代码,它给了我意想不到的输出。以位为单位表示一个整数:错误

public class class4A_d { 
public static void main(String[] args) { 
    System.out.println("Hello world,this is the main function "); 
    int q1= 00000100; //8 bits 
    int q2 = 00000000000000000000000000000100; //32 bits 
    System.out.println("q1 and q2 are respectively "+ q1 + ":" + q2); //q1= 64,q2 =64 
             } 
         } 

我知道的java存储整数作为在2 32位号码,S在后端补充与重量的以下列方式的每个比特进展: 2(^ 0),2(^ 1),2 (^ 2).....等。 但是在这里似乎权重是按照以下方式: 8(^ 0),8(^ 1),8(^ 2).....等等。 任何人都可以解释这一点吗?

+0

的可能的复制[在Java中,可以予定义的整数二进制格式的常数α(http://stackoverflow.com/questions/867365/in-java-can-i-define-an-integer -constant-in-binary-format) – Marged

+0

@已限制。我以前见过你提到的链接,它不回答我的问题伙伴。 –

+0

你的位常数是错的 – Marged

回答

2

当你声明一个int时,你有可能做到十进制,八进制,十六进制和二进制。

二进制:
二进制int常量以0b开头,例如,

int binary = 0b00000100; //decimal: 4 

八:
八INT常量,则以0开头,所以一定要小心,因为它可能发生,您使用这些意外,例如

int octal = 0127; //decimal 87 

十六进制: 十六进制常数INT开始以0x,例如

int hex = 0xFF; //decimal 255 
+0

非常感谢! –

+0

很高兴能帮到 –

+0

darn刚刚发布了这个;) – HaydenKai

相关问题