使用位模式初始化整数变量
Initialising an integer variable with a bit pattern
我是一个绝对的初学者,有以下任务需要完成,但我完全困惑,在网上找不到任何东西,希望有人能帮忙。
任务:
Let the variable “pattern” be declared as an integer with 32 bits and
initialised with the bit pattern 0011 1101 0101 1110 0101 1111 0001
1010 (3D5E 5F1A). Print the variable, set Bit 7 to 1 and print again.
鉴于:
int pattern = ;
boolean ww = false;
int value = 0;
System.out.println("bitpattern = " + pattern + " --> " +Integer.toBinaryString(value));
当我理解正确时,一个整数默认声明为 32 位,所以这部分对我来说没有任何意义。但是,当我尝试将数字 0011 1101 0101 1110 0101 1111 0001 1010 分配给“int pattern”时,出现错误 “整数太大”.
我的误解在哪里?有人知道这方面的教程吗?
谢谢
如果您在 string-form 中有输入,您可以使用 Integer.parse(input, 2)
see docs。
在您的情况下,您可以这样:value = Integer.parseInt(String.valueOf(pattern), 2)
(包含在 try catch 中)
你可以这样做。下划线不是必需的,但可以更轻松地分隔半字节。在字符串前加上 0b
.
int a = 0b0011_1101_0101_1110_0101_1111_0001_1010;
System.out.println(Integer.toHexString(a));
打印
3d5e5f1a
如果你有一串位你可以做
String bitStr = "00111101010111100101111100011010";
int v = Integer.parseInt(bitStr, 2);
System.out.println(Integer.toHexString(v));
打印
3d5e5f1a
对于多头,您必须以 L 为后缀
long longbits = 0b0011110101011110010111110001101000111101010111100101111100011010L;
这里有其他可用的前缀
int hex = 0x2A; // prefix with 0x - 42 in decimal
int octal = 023 // prefix with 0 - 19 in decimal
我是一个绝对的初学者,有以下任务需要完成,但我完全困惑,在网上找不到任何东西,希望有人能帮忙。
任务:
Let the variable “pattern” be declared as an integer with 32 bits and initialised with the bit pattern 0011 1101 0101 1110 0101 1111 0001 1010 (3D5E 5F1A). Print the variable, set Bit 7 to 1 and print again.
鉴于:
int pattern = ;
boolean ww = false;
int value = 0;
System.out.println("bitpattern = " + pattern + " --> " +Integer.toBinaryString(value));
当我理解正确时,一个整数默认声明为 32 位,所以这部分对我来说没有任何意义。但是,当我尝试将数字 0011 1101 0101 1110 0101 1111 0001 1010 分配给“int pattern”时,出现错误 “整数太大”.
我的误解在哪里?有人知道这方面的教程吗?
谢谢
如果您在 string-form 中有输入,您可以使用 Integer.parse(input, 2)
see docs。
在您的情况下,您可以这样:value = Integer.parseInt(String.valueOf(pattern), 2)
(包含在 try catch 中)
你可以这样做。下划线不是必需的,但可以更轻松地分隔半字节。在字符串前加上 0b
.
int a = 0b0011_1101_0101_1110_0101_1111_0001_1010;
System.out.println(Integer.toHexString(a));
打印
3d5e5f1a
如果你有一串位你可以做
String bitStr = "00111101010111100101111100011010";
int v = Integer.parseInt(bitStr, 2);
System.out.println(Integer.toHexString(v));
打印
3d5e5f1a
对于多头,您必须以 L 为后缀
long longbits = 0b0011110101011110010111110001101000111101010111100101111100011010L;
这里有其他可用的前缀
int hex = 0x2A; // prefix with 0x - 42 in decimal
int octal = 023 // prefix with 0 - 19 in decimal