我看到有人提出有关错误“类型不匹配:无法将int转换为byte”的问题。但它们大多是由涉及算术运算的原因引起的。
以下是我的情况: (当我想在Eclipse Kepler中玩比特时会发生这种情况)
事实是,如果它是8位并且最高位是1,则编译器会报错。我想知道为什么。前缀0b表示它是一个二进制文字,那么为什么编译器将最高位视为带符号整数数字或类似的内容?
谢谢您的回答。
[编辑3:]
[编辑2:按位与运算也会触发错误]
这是两张图片。第一张图片的编辑已更新,第二张图片没有描述。
以下是我的情况: (当我想在Eclipse Kepler中玩比特时会发生这种情况)
//java 7 binary literals
byte a = 0b01111111; //8-bit it compiles
byte b = 0b10000000; //8-bit error: Type mismatch: cannot convert int to byte.
byte c = (byte) 0b10000000; //8-bit it works fine if casted.
事实是,如果它是8位并且最高位是1,则编译器会报错。我想知道为什么。前缀0b表示它是一个二进制文字,那么为什么编译器将最高位视为带符号整数数字或类似的内容?
谢谢您的回答。
[编辑3:]
byte a = -128; //a = 0xFF = 11111111 (8 bits), compiler says ok.
byte b = 0b11111111; //compiler error
[编辑2:按位与运算也会触发错误]
byte a = 0b00000000; //8 bits
a = (a&0xFF); //gives same error: Type mismatch: cannot convert int to byte
a = (byte)(a&0xFF); //it is fine to cast
这是两张图片。第一张图片的编辑已更新,第二张图片没有描述。