小编Pen*_*uck的帖子

一元"〜"操作符 - 这到底发生了什么?

我最近做了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的方法.

有没有人明白这一点,因为我不知道这里发生了什么,我打印的数字越多,我就越困惑.

谷歌似乎没有提出任何关于这一点 - 也许它不喜欢看小运营商的迹象.. :-(

java binary

12
推荐指数
2
解决办法
1万
查看次数

静态类变量和序列化/反序列化

从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)

java serialization static deserialization

7
推荐指数
1
解决办法
1854
查看次数

Eclipse中的Android平板电脑模拟器上出现"No Target Selected"错误

我正在使用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.

任何有用的建议将非常感谢.

eclipse android android-emulator

7
推荐指数
1
解决办法
3381
查看次数