二进制

public class TestBinarysystem {
/**
 * 二进制基础:
 * 计算机中一切数据都是二进制的,基本类型(对象,音频,视频)
 * 十进制是人类习惯,计算按照人类习惯利用算法输入输出
 * "10"->算法转化->1010(2)->算法->"10"
 * 16进制是二进制的简写,十六进制就是二进制!为了解决符号问题(计算机硬件不支持正负号,使用补码算法!)
 * 十六进制
 * 逢十六进一,基数:16
 * 数字:0123456789abcdef
 * 权:256 16 1
 * 权:比如十进制的1511。由于十进制的维权是10,所以这个数=1*1000(10的三次方)+5*100(10的二次方)+1*10(10的一次方)+1*0(10的零次方)
 * 十进制          十六进制        二进制
 *  0            0          0000 0000
 *  1            01         0000 0001
 *  2            02         0000 0010
 *  3            03         0000 0011
 *  4            04         0000 0100
 *  5            05         0000 0101
 *  6            06         0000 0110
 *  7            07         0000 0111
 *  8            08         0000 1000
 *  9            09         0000 1001
 *  10           0a         0000 1010
 *  11           0b         0000 1011
 *  12           0c         0000 1100
 *  13           0d         0000 1101
 *  14           0e         0000 1110
 *  15           0f         0000 1111
 *  16           10         0001 0000
 *  17           11         0001 0001
 *  18           12         0001 0010
 *  
 *  41(16)=4*16+1*1=65(10);
 *  
 *二进制与十六进制的转换:4位,4位对应转换;
 *101001000011000(2)->0101 0010 0001 1000
 *                  ->5218(16)
 *char c = 0x5218;//16,2进制
 *补码:
 *  二进制转换表:
 *  十进制         二进制
 *   15             1111        -1
 *   14             1110        -2
 *   13             1101        -3
 *   12             1100        -4
 *   11             1011        -5
 *   10             1010        -6
 *   9              1001        -7
 *   8              1000        -8
 *   0              0000
 *   1              0001
 *   2              0010
 *   3              0011
 *   4              0100
 *   5              0101
 *   6              0110
 *   7              0111
 *  ~4+1 = -4; ~:取反 4 0100 ~ 1011
 * 
 * byte类型 8位补码
 * min:1000 0000
 * max:0111 1111
 *  -1:1111 1111
 * short类型 16位补码
 * min:1000 0000 0000 0000
 * max:0111 1111 1111 1111
 *  -1:1111 1111 1111 1111
 * int类型 32位补码
 * min:1000 0000 0000 0000 0000 0000 0000 0000
 * 十六进制:0x80000000
 * max:0111 1111 1111 1111 1111 1111 1111 1111
 * 十六进制:0x7fffffff
 *  -1:1111 1111 1111 1111 1111 1111 1111 1111
 * 十六进制:0xffffffff
 * long类型 64位补码
 * min:0x80000000 00000000
 * max:0x7fffffff ffffffff
 *  -1:0xffffffff ffffffff
 * 
 * 移位运算符:
 * 1、
 * <<
 * 1101001->高位去掉,低位补0->10100110
 * 2、
 * >>
 * 011010011->高位补0,低位去掉->11101001
 * 3、
 * >>>
 * 011010011->高位补0,低位去掉->001101001
 *    @param args
 */
    public static void main(String[] args) {
        char f = 0x5218;//16,2进制
        System.out.println(f);
        int i = -1;//0xfffffff 补码
        int max = 0x7fffffff;
        int min = 0x80000000;
        long maxL = 0x7fffffffffffffffL;
        System.out.println(Integer.toBinaryString(i));
        System.out.println(Integer.toHexString(i));
        System.out.println(Integer.toBinaryString(min));
        System.out.println(Integer.toHexString(min));
        System.out.println(Integer.toBinaryString(max));
        System.out.println(Integer.toHexString(max));
        System.out.println(Long.toBinaryString(maxL));
        System.out.println(Long.toHexString(maxL)); 
        //二进制运算
        int x = 0xfffffffe;//-2
        //11111111 11111111 11111111 11111110
        int b = x<<1;//数字左移*2
        //11111111 11111111 11111111 11111100
        int c = x>>1;
        //11111111 11111111 11111111 11111111
        int d = x>>>1;
        //01111111 11111111 11111111 11111111
        System.out.println(Integer.toBinaryString(x));
        System.out.println(Integer.toBinaryString(b));
        System.out.println(Integer.toBinaryString(c));
        System.out.println(Integer.toBinaryString(d));
        System.out.println(Integer.toHexString(x));
        System.out.println(Integer.toHexString(b));
        System.out.println(Integer.toHexString(c));
        System.out.println(Integer.toHexString(d));

    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值