基本数据类型,进制以及常用的用法
进制
- 二进制位 简称“位”,一个二进制包含的信息称为一比特(bit).每一个bit可以代表0或1的数位信号,是电脑记忆体中最小的单位;
- 字节:bye:是计算机可寻址的最小单位,每个字节有8个二进制位。
- word 字,有2byte组成,
十进制:10 八进制:012 十六进制:0x0a 二进制:1010
CPU主要有32位,64位,32位cpu能够寻址的范围是4GB,,通常一个cpu指令是4byte,执行一次就读取32bit内容
基本数据类型
c.c++在不同的操作系统平台,给基本类型变量分配的字节是不一样的。java是跨平台语言,JVM包装后的基本数据字节长度是一样的
1 | byte:1字节 |
int long等整数类型
最高位是符号位,正数是0 ,负数是1
原码
将一个数字转换为二进制就是这个数字的原码
反码
正数的反码是原码
负数的反码是在原码的基础上,符号位不变,其他位都取反
-3 原码 1000 0000 0000 0011
-3 反码 1111 1111 1111 1100
补码
正数的补码是原码,也就是反码
负数的补码的基础上加1
-3 的补码: 1111 1111 1111 1101
补码是因为计算机在进行数值计算的时候,是通过补码来表示每个数值,好处是减法的计算方式与加法一样
1 | 5 - 3 = 5 + (-3) =2 |
double float
位操作符
与 &
两个位 都为1 结果是1
应用:
- 清零:与一个各位都是0的数值相与,结果是0
- 去一个数中的指定位:取4位,,,,A & 0000 1111= 0000 AAAA,得到A的最后四位
或 |
只要有一位是1,结果就是1
应用:
- 置1:将指定位置置为1
非 ~
对操作数的每一位进行操作,1变0,0变1
异或 ^
两个数 数值相同则为0,数值不同则为1
应用:
- 简单的数值加密:与某一个数值异或,再与该数值异或,变为原来的数值
- 翻转特定为:X = 1010 1110将低4位翻转,X^0000 1111 = 1010 0001
右移>>
符号位不变,整体向右方向移动n位,高位空出来的位数值为0
a>>b = a/(2^b)
左移<<
符号位不变,低位空出来的位补数值0
a<<b = a*(2^b)
使用
其他进制转二进制字符串
在java里Integer、Long这两个类里都以下三个方法:
//将i转换成二进制
toBinaryString(long i);
toBinaryString(int i);
//将i转换成十六进制
toHexString(long i);
toHexString(int i);
//将i转换成八进制
toOctalString(long i);
toOctalString(int i);
二进制转其他进制
Integer、Long两个类里都将字符串转换成各种不同进制的方法:
parseInt(String s, int radix);
parseLong(String s, int radix);