我最近做了Java课程(1周速成课程),我们介绍了一些二进制数学.
这个一元〜运算符(代字号,我认为它被称为?)向我们解释了:
它将位模式反转,每"0"变为"1",每"1"变为"0".例如,一个字节有8位.如果您有以下字节:00000000,则反转值将更改为11111111.
以上解释清晰简洁,对我来说完全有道理.直到,也就是说,我试图实现它.
鉴于这种:
byte x = 3;
byte y = 5;
System.out.println(~x);
System.out.println(~y);
Run Code Online (Sandbox Code Playgroud)
输出是:
-4
-6
Run Code Online (Sandbox Code Playgroud)
我对这是怎么回事感到很困惑.
如果二进制中的+3是11,那么这个的反转将是00,这显然不是-3.
但由于一个字节中有8位,那么+3的二进制表示不应写为00000011吗?
哪个会反转成11111100.转换回十进制值这将是252.如果你将+3写为011,那么它确实转换为100,即+4,但那么你怎么知道它是负数?
如果你尝试0011,转换为1100,如果你使用第一位作为符号,那么它确实变为-4.
啊 - 所以在这一点上,我以为我到了某个地方.
但后来我得到了y = 5的第二个值.
我们怎么写这个?使用相同的逻辑,+ 5转换为二进制0101,其反转为1010.
而现在,我非常困惑.这看起来代表有符号值-2,或无符号值+10十进制?这些都不是-6我打印出来的.
再次,如果我将长度增加到一个字节的8位数,+ 5是00000101,其反转变为11111010.而且我真的找不到将其转换为-6的方法.
有没有人明白这一点,因为我不知道这里发生了什么,我打印的数字越多,我就越困惑.
谷歌似乎没有提出任何关于这一点 - 也许它不喜欢看小运营商的迹象.. :-(
从SCJP 6学习指南 - 有一个问题要求输出以下有关序列化的代码:
import java.io.*;
public class TestClass {
static public void main(String[] args) {
SpecialSerial s = new SpecialSerial();
try {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("myFile"));
os.writeObject(s);
os.close();
System.out.print(++s.z + " ");
s = null; // makes no difference whether this is here or not
ObjectInputStream is = new ObjectInputStream(new FileInputStream("myFile"));
SpecialSerial s2 = (SpecialSerial)is.readObject();
is.close();
System.out.println(s2.y + " " + s2.z);
} catch (Exception e) {e.printStackTrace();}
}
}
class SpecialSerial implements Serializable {
transient int y …Run Code Online (Sandbox Code Playgroud) 我正在使用Eclipse学习Android编程,但无法创建平板电脑模拟器.我已经成功创建了许多手机模拟器,这些都可以正常工作.
当我尝试在Android虚拟设备管理器中创建平板电脑模拟器时,我收到错误:"没有选择目标",即使当我从下拉列表中选择设备时它会自动放置目标,并且我确实安装了该图像.
这是一个截图.我添加的唯一设置是名称 - 所有其他设置是我从下拉菜单中选择Nexus 10时出现的自动设置.我的意思是当我选择Nexus 10时会自动设置目标,内存选项,内部存储等也是如此.

我也试过使用不同的目标 - 包括Android和Google API的14,15,16,17,18和19.但它们都没有工作.屏幕截图中显示的是我选择Nexus 10设备时出现的默认设置.
另外(这是一个编辑 - 之前忘了提及)我尝试将CPU/ABI设置为该下拉列表中的每个可能性(为每个API版本尝试了所有这些),但是再次没有成功.
这是我安装的相关图像和API等的屏幕截图:

有谁知道我在这里做错了什么,以及如何让平板电脑模拟器运行?此处还有其他几个类似的问题,但我已经尝试了答案,例如确保安装了API级别16图像,重新启动eclipse,删除并重新安装模拟器,删除并重新安装SDK,删除并重新安装API映像等等.我已经没有东西可以重新安装了.
我的所有平板电脑仿真器都在发生这种情况,而不仅仅是nexus 10.
任何有用的建议将非常感谢.