JAVA基础01-进制转换

目录

说明

机器数

原码

反码

补码

二进制

八进制

十六进制

进制转换记忆


说明

在计算机里面一个数值是使用二进制的补码进行保存(原码、补码、反码)


机器数

一个数在计算机中的表现形式叫做机器数,这个数有正负之分,在计算机中用一个数的最高位(即为符号位)用来表示它的正负,其中0表示正数,1表示负数。


原码

用第一位表示符号,其余位表示值。因为第一位是符号位,所以8位二进制数的取值范围就是:[1111_1111 , 0111_1111] 即 [-128 , 127]

原码是容易被人脑所理解的表达方式


反码

正数的反码是其本身负数的反码是符号位保持不变,其余位取反。例如正数1的原码是[0000_0001],它的反码是是其本身

[0000_0001],-1的原码是[1000_0001],其反码是[1111_1110]


补码

正数的补码是其本身。负数的补码是在其反码的基础上+1,例如正数1的原码是[0000_0001],他的补码是其本身[0000_0001],

-1的补码是[1111_1110]+1=[1111_1111]


二进制

 在java里面使用0b或者0B作为前缀表示这个数为二进制的数值 例如:0b01010011

最高位是符号位:正数为0 负数为1

二进制转换为10机制操作(规律:m*2^(n-1)),n表示当前的第几位

练习:求-1的二进制,假设位数是8位

扩展:知道-1的二进制,那么-9的二进制为


八进制

3位的2进制可以表示一个8进制的数值,从低位开始,每三位一组,不够则补0

在java里面使用0作为前缀表示这个数为八进制的数值 例如:0776 (规律:m*8^(n-1)):7*8^2+7*8^1+6*1==510


十六进制

0~9 abcdef【10、11、12、13、14、15】(规律:m*16^(n-1)

在java里面使用0x或者0X示这个数为十六制的数值 例如:0X76ee

一定要掌握二进制如何转换为8、10、16进制,反之一样

0111_1011_0110_1110 转换为16进制(一般用下划线来分割)

0x7b6e

01_101_110 转换为8进制

0156

01110110 转换为10进制

64+32+16+4+2=118


进制转换记忆

下面是一些记忆它们之间转换顺序的方法:

  • 二进制到十进制:二进制数中的每一位数都对应着一个特定的十进制数。例如,二进制的101(表示为1后面跟着01)转换为十进制是5
  • 十进制到二进制:将十进制数除以2,得到商和余数,然后用余数作为新的被除数,重复这个过程,直到商为0。将每次得到的余数逆序排列,就可以得到对应的二进制数。例如,十进制的5转换为二进制是101
  • 八进制到十进制:八进制数中的每一位数都对应着一个特定的十进制数。例如,八进制的123(表示为1后面跟着23)转换为十进制是51
  • 十进制到八进制:将十进制数除以8,得到商和余数,然后用余数作为新的被除数,重复这个过程,直到商为0。将每次得到的余数逆序排列,就可以得到对应的八进制数。例如,十进制的51转换为八进制是123
  • 十六进制到十进制:十六进制数中的每一位数都对应着一个特定的十进制数。例如,十六进制的1A(表示为1后面跟着A,其中A代表10)转换为十进制是26
  • 十进制到十六进制将十进制数除以16,得到商和余数,然后用余数作为新的被除数,重复这个过程,直到商为0将每次得到的余数逆序排列,就可以得到对应的十六进制数。例如,十进制的26转换为十六进制是1A

记忆这些转换顺序的一个好方法:记住每个进制系统的基数,并理解每个进制系统中每个位置代表的数值范围例如,在二进制中,只有01,而在十六进制中,有0-9以及A-F(分别代表10-15)。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值