以位为单位表示整数:错误

时间:2017-04-17 08:31:02

标签: java integer byte type-conversion

我试图以字节为单位声明一个整数。 我的意思是:我试图将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).....等。 有谁能解释一下?

1 个答案:

答案 0 :(得分:2)

声明int时,可以使用十进制,八进制,十六进制和二进制。

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

int binary = 0b00000100; //decimal: 4

八路:
八进制int常量从0开始,所以要小心,因为它可能会发生,你意外地使用它们,例如。

int octal = 0127; //decimal 87

十六进制: 十六进制int常量以0x开头,例如

int hex = 0xFF; //decimal 255