java学习笔记--二进制基础

1、二进制位运算
&:与运算6&3=2
|:或运算6|3=7
^:异或运算6^3=5
~:反码~6=-7
<<:左移3*2=6
“>>”:右移3/2=1
“>>>”:无符号右移3/2=1

2、二进制计算的优点
特定情况下,计算方便,速度快 ,被支持的面广
采用算数方法,速度慢,逻辑复杂

3、位运算的使用
&:清零、取特定的位
|:置一
^:是特定位反转(特定位与1异或)、与0相异或保留原值
交换两个变量的值:
(1)借助中间变量
(2)利用加减法实现
A=A+B;B=A-B;A=A-B
(3)用位异或实现,效率最高
原理:利用一个数异或本身等于0,和异或运算符合交换率
如:A=A^B;B=A^B;A=A^B

4、java内置的进制转换
十进制转化成其他进制:
Integer.toBinaryString(112);//2进制
Integer.toHexString(112);//16进制
Integer.toOctalString(112);//8进制

其他进制转换成十进制:
Integer.parseInt(“121001”,2);//2进制
Integer.parseInt(“27”,8);//16进制
Integer.parseInt(“A8”,16);//8进制

5、字节序列和字符串的转换的编码问题

package com.imooc.file;

import java.io.UnsupportedEncodingException;

public class EncodeDemo {

    public static void main(String[] args) throws UnsupportedEncodingException {
        String s = "慕课ABC";
        byte[] bytes1 = s.getBytes();//转换成字节序列用的是默认的 编码gbk
        for (byte b : bytes1) {
            //把字节(转换成了int)以十六进制的形式显示
            System.out.print(Integer.toHexString(b&0xff)+" ");
        }
        //gbk编码
        System.out.println();
        byte[] byte2 = s.getBytes("gbk");
        //gbk编码中文占用两个字节,英文占用一个字节
        for (byte b : byte2) {
            System.out.print(Integer.toHexString(b&0xff)+"  ");
        }

        //utf-8编码
        System.out.println();
        byte[] byte3 = s.getBytes("utf-8");
        //utf-8中中文占三个字节,英文占一个字节
        for (byte b : byte3) {
            System.out.print(Integer.toHexString(b&0xff)+" ");
        }

        //java是双字节编码,utf-16be
        System.out.println();
        byte[] byte4 = s.getBytes("utf-16be");
        //utf-16be中文占两个字节,英文占两个字节
        for (byte b : byte4) {
            System.out.print(Integer.toHexString(b&0xff)+" ");
        }

        /**
         *当你的字节序列是某种编码时,当将字节序列编程字符串时,
         *也需要使用这种编码否则会出现乱码
         */
        System.out.println();
        String str1 = new String(byte4);//用项目默认编码
        System.out.println(str1);

        //使用utf-16be编码
        System.out.println();
        String str2 = new String(byte4,"utf-16be");
        System.out.println(str2);

        /**
         * 文本文件 就是字节序列
         * 可以是任意编码的字节序列
         * 如果我们在中文机器上直接创建文本文件 ,那么该文本文件只认识ansi编码方式
         * 联通、联(utf-8)的txt是乱码,联想txt不是乱码(ansi)这是一种巧合
         */

    }

}

一个项目可以设置编码方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值