Java 进制转换和位运算符

什么是进制

是数学中的一个概念,就是数据“逢几进位”。
例如:生活中用的技术方法 —— 十进制,十进制就是数字逢十进一。
例如:一个 星期右七天,就是逢七进一;一个月右30天就是逢30进一;一年有365天,就是逢365进一,一分钟有60秒,就是逢60进一。诸如此类的还有很多!!!

Java 针对整数常量提供了4种表现形式

二进制
四进制
八进制
十六进制

为什么会有二进制,八进制,十六进制

有二进制的原因是因为计算机最底层的弟子元气就只有2种状态 —
高电平和低电平(有点和无电)。
任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来,一个整数在内存中一样也是二进制的,但是使用一大串1或者2组成的数组进行使用很麻烦!

有8进制,16进制的原因是因为二进制表现同样的数量太长不方便阅读和记忆,而8进制和十六进制较短,方便阅读和记忆

计算机中存储单位的换算

什么是bit(比特) 二进制:001 每一位都是一个bit,二进制只能是0或12个数字组成 是计算机中一个最小的信号单元,可能是高电平或者是低电平

1 byte = 8 bit
1 kb = 1024 byte kb是千字节 1024 是 2的10次方
1 mb = 1024 kb mb 兆字节
1 gb = 1024 kb GB 十亿字节,千兆字节
1 ti = 1024 gb TB 太字节

奥斯卡马值

**在这里插入图片描述**

不同进制的组成

二进制
由 0,1 组成。以0b开头
八进制
由0至7组成,以0开头
十进制
由0至9组成。整数默认是十进制的 1
十六进制
由0至9,a,b,c,d,e,f (大小写均可),以Ox开头

位逻辑运算符(都是数据类型(二进制))

&: 按位与
| :按位或
^ :按位异或
~: 按位取反

位移运算符

<<: :左移
> > : 右移
>>>: 无符号右移

public static void main(String[] args) {
        /**
         *  按位与 &  规则: 将同为 1的值相加并且返回
         *  3 & 4 结果是多少?
         *  在进行位运算符的时候,要把数据转换成二进制!并且全部都是 二进制的补码形势!
         *  3的二进制: 0b00000000000000000000000000000011
         *  4的二进制: 0b00000000000000000000000000000100
         *  3的4按位&:
         * */
//        System.out.println(0b0000000000000000000000000000000100001&0b0000000000000000000000000000001100011);

//        System.out.println(-3&-4);
        /**
         *  按位或 |  规则:  每个值想比较,那个值等于1就返回值
         *  3 & 4 结果是多少?
         *  在进行位运算符的时候,要把数据转换成二进制!并且全部都是二进制的补码形势!
         *  3的二进制: 0b00000000000000000000000000000011
         *  4的二进制: 0b00000000000000000000000000000100
         *  3的4按位|: 0b00000000000000000000000000000111
         * */
//        System.out.println(0b00000000000000000000000000000011|0b00000000000000000000000000000100|0b00000000000000000100000000000100);
        /**
         *  按位异或  ^ 规则: 同一个位置上 2个值不相同的值就返回
         *  3 & 4 结果是多少?
         *  在进行位运算符的时候,要把数据转换成二进制!并且全部都是二进制的补码形势!
         *  3的二进制: 0b00000000000000000000000000000011
         *  4的二进制: 0b00000000000000000000000000000100
         *  3的4按位&: 0b00000000000000000000000000000111
         * */
//        System.out.println(0b00000000000000000000000000000111^0b00000000000000000000000000000100);


        /**
         *  按位异或  ~ 规则: 取反(等于这个树的负数+1)
         *  3 & 4 结果是多少?
         *  在进行位运算符的时候,要把数据转换成二进制!并且全部都是二进制的补码形势!
         *  4的二进制: 0b00000000000000000000000000000100
         *  4按位~: -5
         * */
//        System.out.println(~0b00000000000000000000000000000100);

        /**   <<<
         *  相当于 1的10次方 等于 1024  因为 1在二进制中相当于 2(除了第一位)
         * */
//        System.out.println(1<<10);

        /**   >>
         *  相当于 1向左边边移动了1位
         *  例如: 1024 是 1的10次方    右移一次 之后  就变成了 1的 9次方
         * */
//        System.out.println(1>>1);
        /* >>>
        * 无符号右移
        *
        * */
        //不要用 short 和 byte 来做 无符号右移,不然会溢出的
        byte a =(byte)(-128>>>2);
        short b =(short)(-258>>>2);
        int c =(-258>>>2);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值