二进制与java中的数据类型

计算机中的二进制以补码的形式存在

在这里插入图片描述

1、名词解释

  1. 位置制计数法: 是指按位置决定数值的方式来计数的方法。
    一个数的大小,用一组有顺序的数字表示。
    数字表示的大小,取决于它所代表的数值所处的位置
  2. 数码:使用的数字符号。(十进制的数码:0,1,2,3,4,5,6,7,8,9)
    基数:每个进制的基数。(十进制的基数:10,逢10进一)
    位权:固定位置对应的单位值。(十进制的位权:个、十、百、千…即10的0次方,1次方,2次方。。。)
  3. 比特:最小的存储单位,单位是小写的b。
    字节(byte):包含8个比特。
  4. 机器数:将数据的首位设定为符号位,0位正,1为负。
    补码计算方式:整数补码=反码=原码,负数补码=反码+1

2、进制转换

2.1、整数部分

  1. 二进制转换为十进制:展开位权进行求和运算
  2. 十进制转换为二进制: 除2取余直至运算结果为0,将余数倒序排序(最后面的为2的n次方)
  3. 二进制转八进制和十六进制:每3位的二进制数,可以转换成1位八进制数,每4位二进制数可以转换为1位十六进制数(从右往左进行转换,位数不够补0)

2.2 、小数部分

  1. 十进制的小数的位权(从左往右)分别为10的-1次方,-2次方,-3次方。
  2. 二进制的小数的位权(从左往右)分别为2的-1次方,-2次方,-3次方。
  3. 二进制的小数转十进制与整数一样,都是展开位权进行求和运算
  4. 十进制的小数转二进制,小数部分除0.5(即乘2)直至小数部分为0,将每次计算结果的整数部分正序排列。(大多数十进制的小数转换为二进制的小数都是无限循环的)

3、二进制位运算

位运算就是直接对整数在内存中的二进制位进行操作。
符号位直接参与运算,将溢出的部分舍去,就的到正确的计算结果。

3.1逻辑操作

3.1.1 按位与(&)

规则:1&1=1、1&0=0、0&1=0,0&0=0;
通常用于二进制的取位操作。相同位的两个数字都为1,则为1;若有一个不为1,则为0.
例如一个数&1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,最末位为1表示该数为奇数。

3.1.2 按位或(|)

规则:1|1=1、1|0=1、0|1=1,0|0=0
相同位只要一个为1即为1。通常用于二进制特定位上的无条件赋值,例如一个数|1的结果就是把二进制最末位强行变成1.如果需要把二进制最末位变成0,对这个数|1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。

3.1.3 按位异或(^)

相同位不同则为1,相同则为0。
两次异或同一个数最后结果不变,即(a^ b)^ b=a;

3.1.4 按位取反(~)

not运算的定义是把内存中的0和1全部取反。

3.2 移位运算符

移位运算符组成的表达式也属于算数表达式,其值为算数值。
在移位运算时,byte、short和char类型移位后的结果会变成int类型,规定实际移动的次数是移动次数和32的余数,也就是移位33位和移位1位得到的结果相同。

3.2.1 左移运算符<<

规则:是将一个二进制的操作数按指定移动的位数向左移动,符号位不变,移出位被丢弃,右边移出的空位一律补0.

3.2.2 右移运算符>>

规则:将一个二进制位的操作数按指定移动的位数向右移动,符号位不变,右侧低位舍弃,左侧高位正数补0,负数补1.

3.2.3无符号右位移运算>>>

规则:右侧低位舍弃,左侧高位补0.

4 java中的数据类型

4.1 java中的整数类型

1.byte(1字节),short(2字节),int(4字节),long(8字节)。BigInteger(引用类型)。默认使用的是int
2.整数类型都是使用二进制补码存储。
3.多字节数据在存储和传输中的顺序:
①大端模式:高位字节放在低地址,低位字节放在高地址。
②小端模式:低位字节放在低地址,高位字节放在高地址。
每个字节的存储空间都有地址编号,数据是根据地址编号取出来的。
①高地址:地址编号大的。
②低地址:地址编号小的。
③高位字节:位权大的字节
④低位字节:位权小的字节
人类习惯的存储方式:大端模式,Java默认使用的也是大端模式。

4.2 java中的浮点类型

  1. 浮点数:数值数据的小数点位置不固定。
  2. 指数规则:任意实数,都可以由一个定点数(小数点的位置固定)乘以基数的整数次幂得到。
  3. 定点数部分:尾数,指数部分:阶码
  4. 逻辑上采用(符号位,阶码,尾数)来表示一个数。
  5. 二进制浮点数标准:IEEE754
  6. 单精度float(4字节)和双精度double(8字节)
  7. float:1位符号位(1S),8位阶码位(8E),和23位尾数(M)
  8. double:1位符号位(1S),11位阶码位(8E),和52位尾数(M)
  9. 尾数M:纯小数形式,小数点在尾数最前端,通常为规约形式
    规约形式:在科学表示法下,小数最高有效位是1(整数部分)。
    浮点数的阶码通常用移码来表示。移码:将数值正向偏移(2e-1),等于符号位

问题

补码为什么参与运算是正确的
byte的最小值为-128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值