码迷,mamicode.com
首页 > 其他好文 > 详细

整型数从最小到最大取值,二进制变动机制

时间:2017-07-28 13:27:38      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:结果   log   机制   string   bit   运算   stat   nbsp   todo   

public class BitTestMaxAndMin {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int min=0x80000000;
        //Integer包装的整数类中可取的最小值为-2147483648
        int max=0x7fffffff;
        //Integer包装的整数类中可取的最大值为2147483647
        System.out.println("最小整数为:"+min);
        System.out.println("二进制表示:"+Integer.toBinaryString(min));//用二进制表示最小的整数,结果为一个1后跟31个0。左数第一个表示正负,1表示为负数
        System.out.println("右移一位后:"+Integer.toBinaryString(min>>>1));
        System.out.println("转回十进制:"+(min>>>1));//右移,左侧用0补位
        System.out.println();
        
        min--;
        System.out.println("最小整数-1后为:"+min);
        System.out.println("用二进制表示为:"+Integer.toBinaryString(min));//用二进制表示最小的整数,结果为32个1,左数第一个1即32位表示正负,1表示为负数
        System.out.println("将此数右移一位:"+Integer.toBinaryString(min>>>1));//右移,左侧用0补位
        System.out.println("转换为十进制为:"+(min>>>1));
        System.out.println("位的非运算后为:"+(~min>>>1));
        System.out.println("对应二进制数为:"+Integer.toBinaryString(~min>>>1));
        
        System.out.println();
        
        System.out.println("最大整数为:"+max);
        System.out.println("二进制表示:"+Integer.toBinaryString(max));//用二进制表示最大的整数,结果为31个1
        System.out.println("valueOf方法测试:"+Integer.valueOf(Integer.toBinaryString(max), 2));//注意此句能运行        
        System.out.println("0后跟31个1的测试:"+Integer.valueOf("01111111111111111111111111111111", 2));//等同于上句
        System.out.println();

        System.out.println("十进制数取:"+0);
        System.out.println("二进制表示为:"+Integer.toBinaryString(0));
        System.out.println("对0进行位的非运算,十进制表示为:"+~0);
        System.out.println("用二进制表示为:"+Integer.toBinaryString(~0));
        System.out.println("进行右移表示为:"+Integer.toBinaryString(~0>>>1));//~0即为-1右移一位左侧补0后,显示为31个1
        System.out.println("转换为十进制为:"+(~0>>>1));//将这个移位后的二进制数用十进制表示,即Integer能取到的最大值max
        /**
         * 故而可知正整数从0向2147483647取值是由31个0表示的二进制不断加一完成的
         * 而负整数从-2147483648向-1取值也是由1后跟着31个0表示的二进制不断加一完成的
         */

        
        
        /*这里的1能打到31位,已经表示为最大的整数2147483647
         *如果打到32位,并且第一位是1的话,运行Integer中的valueOf方法会报错
         *所谓的32位,第一位用来表示正负,0表示为正数,1表示为负数
         *System.out.println(Integer.valueOf(Integer.toBinaryString(min), 2));的valueOf的参数有32位且都为1,不能运行
         */
    }

}

 

整型数从最小到最大取值,二进制变动机制

标签:结果   log   机制   string   bit   运算   stat   nbsp   todo   

原文地址:http://www.cnblogs.com/vic-architect/p/7249616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!