zoukankan      html  css  js  c++  java
  • 整型数从最小到最大取值,二进制变动机制

    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,不能运行
             */
        }
    
    }

  • 相关阅读:
    结对编程
    个人项目(JUnit单元测试)
    我的第一个GitHub仓库
    Visual Studio 创建C++或C#Windows程序
    字符串操作
    练习数值计算
    Hello World
    ceph部署出现错误及解决
    asp.net mvc 用Redis实现分布式集群共享Session。
    Unable to load DLL 'rasapi32.dll': 动态链接库(DLL)初始化例程失败。
  • 原文地址:https://www.cnblogs.com/vic_/p/7249616.html
Copyright © 2011-2022 走看看