如何在Java中学习整数的二进制表示?

时间:2014-08-12 07:47:15

标签: java bit-manipulation

我熟悉内存中整数的二进制表示 - 即如何表示正数,负数,前导位用于符号等等。我不知道像0x000f这样的表示意味着什么,我应该如何解释它。有人可以提供一些很好的教程或者至少告诉我要google什么,因为当我谷歌“二进制表示”时,我没有找到这个数字0x000f的含义的任何解释?

3 个答案:

答案 0 :(得分:3)

您提供的示例0x000F实际上并不是二进制;它是十六进制的(基数为16)。您可以知道,因为十六进制数字通常以0x开头,而二进制文件通常以0b开头(如果它始终以任何内容开头)。

在十六进制基本系统中,每个数字可以具有以下值之一:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

A代表10,B代表11,C代表12,D代表13,E代表14,F代表15。

因此,0x000F将等于0 * 16^3 + 0 * 16^2 + 0 * 16^1 + 15 * 16^0 = 15

以下是查看更多信息的资源:https://en.wikipedia.org/wiki/Hexadecimal

答案 1 :(得分:0)

来自Hexadecimal

定义:

  

十六进制是指一个基数为16的编号系统。这意味着它使用所有数字0,1,2,3,4,5,6,7,8,9以及字母A,B ,C,D,E,F用于数字的每个数字。类似于意大利语这样的语言代表英语单词' number' as' numero',十六进制表示122的否定数字为7A。它只是另一个代表相同价值的系统。

要显示十六进制编号系统的进度,请查看下面的十六进制值,因为它们是从否定数字转换而来的。请注意,一旦达到10,十六进制系统就会使用字母:

Denary=Hexadecimal;0=0;1=1;2=2;3=3;4=4;5=5;6=6;7=7;8=8;9=9;10=A;11=B;12=C;13=D;14=E;15=F;16=10; and so on.
  

十六进制系统是一种表示位的紧凑方式。每个十六进制数字可以表示四个比特,即十六进制数字可以表示16个值(0-15),这与四个比特(1111)完全相同。由于这种完美的转换和现代计算机围绕字节(8位)设计,十六进制是一种广泛使用的方法来表示二进制数。

示例:

在java中,要将十六进制数表示为文字,请使用前导零后跟x。

例如,以下将为十六进制数7A返回122的值:

int hexNumber = 0x7A;
System.out.println(hexNumber); 

答案 2 :(得分:0)

java中有不同的前缀来分配整数值。 0表示二进制的十八进制0b和十六进制的0x

    int binary  = 0b10;
    int octa    = 010;
    int hexa    = 0x10;

    System.out.println(binary);
    System.out.println(octa);
    System.out.println(hexa);

输出:

2
8
16

Hexdezimal是16,所以你需要16个不同的符号。从0到9,从A到F. A等于10 in dezyimal,依此类推。如果你需要在java中没有文字表示的任何其他数字系统中分配一个整数,你可以使用Integer.parse("1011",2)作为数字系统的基础作为secound参数。