问题描述
code:public static void main(String[] args) {int a = -59;int a1 = 59;System.out.println(Integer.toBinaryString(a));System.out.println(Integer.toBinaryString(a1));}result:11111111111111111111111111000101111011疑惑,在java中int大小不论在什么平台都是32位大小的,可以为什么我打印出这两个数的二进制数,只有前者是32位,还有一个问题是,Integer.toBinaryString(int a) 方法直接是转化为原码表示吗?
解决方案
Integer.toBinaryString(int a)对正数是原码,负数是补码Integer.toBinaryString(59) = 111011前面的0忽略了
时间: 2024-11-02 03:01:23