计算机的二进制规则
来源:互联网 发布:淘宝企业店铺装修教程 编辑:程序博客网 时间:2024/05/16 13:02
一.int和long转化为二进制输出结果
package day03;public class Demo1 {public static void main(String[] args) {int i=0xf;//十六进制System.out.println(Integer.toBinaryString(i));//1111int a = -1;long l = -1l;System.out.println(Integer.toBinaryString(a));//32位System.out.println(Long.toBinaryString(l));//64位System.out.println(Long.toBinaryString(a));//64位}}
二.调取int最大值跟最小值
package day03;public class Demo2 {public static void main(String[] args) {int max = Integer.MAX_VALUE;//max=0x7fffffff——>2147483647System.out.println(max);System.out.println(Integer.toBinaryString(max));int min = Integer.MIN_VALUE;//min=0x80000000——>-2147483648System.out.println(min);System.out.println(Integer.toBinaryString(min));}}
三.~——>取反符号,-n=~n+1,二进制的规则如下:
package day03;public class Demo3 {public static void main(String[] args) {int n = 8;//n = 00000000 00000000 00000000 00001000——>显示栏显示1000//~n= 11111111 11111111 11111111 11110111——>-9//~n+1 = 11111111 11111111 11111111 11111000——>-8int m = ~n+1;System.out.println(n);System.out.println(Integer.toBinaryString(n));System.out.println(~n);System.out.println(Integer.toBinaryString(~n));System.out.println(m);System.out.println(Integer.toBinaryString(m));int i =100;//i = 00000000 00000000 00000000 01100100——>显示栏显示1100100//~i= 11111111 11111111 11111111 10011011//~i+1 = 11111111 11111111 11111111 10011100System.out.println(Integer.toBinaryString(i));System.out.println(~i);System.out.println(Integer.toBinaryString(~i));System.out.println(Integer.toBinaryString(~i+1));}}
四.char类型是Unicode编码的整数
package day03;public class Demo4 {public static void main(String[] args) {// char类型是Unicode编码的整数——>Unicode:一个符号一个数,将字符转换为数据!//Java char类型是Unicode3.2,65535个字符int i = 'm';System.out.println(i);//109int l = '敏';System.out.println(l);//25935int j = '馨';System.out.println(j);//39336}}
五.互联网或者文件都是按照byte(8位数)进行数据传输的
字符数据在互联网(文件)传输时候必须拆分位byte(8位)进行传输
——>将字符数据拆分位byte数据的过程称为:编码
——>将byte数据重载合并为字符数据分过程称为:解码
1.与运算 & (逻辑乘法)——>两个二进制数字对其位,上下进行 & 运算
int n = 0x4eed;——>100111011101101
int m = 0x3f;——>111111
int k = n&m;——>截取n的后六位101101
2.或运算 | (逻辑加法)——>两个二进制数字对其位,上下进行 & 运算
int n = 0x2d;//101101
int m = 0x80;//10000000
int k = n|m;//10101101
3.>>>(逻辑右移位计算)
int n = 0x4eed;——>100111011101101
int m = n>>>6;——>100111011(右移六位,右边六位丢失)
4.<<(数学左移位计算)
优化计算为:n*8为——>n<<3
int n =110010;——>50
int m =n<<1;——>1100100——>100(左移一位,因为二进制所以变成两倍)
5.>>(数学右移位计算)
>>>与>>的差别
数学右移位>>,正数时候高位补0,负数高位补1
逻辑右移位>>>,正数时候高位补0,负数高位补0
正数时候因为二进制所以减小两倍50——>25
负数时候(二进制)数学右移位>>扩大两倍-50——>-25
6.UTF-8——>3字节编码:1110xxxx10xxxxxx 10xxxxxx
——>解码
package day03;public class Demo9 {public static void main(String[] args) throws Exception{int n = '中';//100111011101101int m = 0x3f;//111111int i = 0x80;//10000000int j = 0xf;//1111int k =0xe0;//11100000int b3 =n&m | i;int b2 =(n>>>6) & m | i;int b1 =(n>>>12) & j | k;//验证一下:new String(byte, 编码方案)//将bytes数据进行编码byte[] bytes = {(byte)b1,(byte)b2,(byte)b3,(byte)b1,(byte)b2,(byte)b3};String str = new String(bytes,"UTF-8");System.out.println(str);//中//解码int ch = (b1&0xf)<<12 | (b2&0x3f)<<6 | (b3&0x3f)<<0;System.out.println((char)ch);//中}}
阅读全文
0 0
- 计算机的二进制规则
- 浅谈计算机内部的二进制
- 计算机内部的二进制存储
- 计算机二进制的自我理解
- 计算机二进制
- 计算机二进制
- 二进制运算(& , | , ~的运算规则)
- 【二进制】计算机二进制补码
- 计算机数据的二进制编码(整数)
- 计算机中汉字的二进制编码表示
- 计算机中二进制的存储方法
- 计算机中二进制减法的问题
- 计算机组成.计算机的真与假.二进制
- 什么是计算机的大小端规则?
- 规则数独的计算机求解
- 计算机的二进制起源和进制的转换
- 二进制和计算机
- 计算机中的二进制
- 洛谷P1456 (HDU 1512)Monkey King
- E
- zynq学习笔记二:编译U-Boot(zybo)
- [BZOJ]1093: [ZJOI2007]最大半连通子图 Tarjan缩点+拓扑图DP
- 第四周项目二C/C++建设“单链表”算法库
- 计算机的二进制规则
- GitHub Hello world中文教程
- Introduction to D3
- ViewDragHelper
- eclipse编译安卓时报错
- 1021. 个位数统计 (15)
- sql 语法篇2
- 安卓android webview圆角效果
- 什么是HTML