进制间的相互转换,二进制转十进制,八进制转十进制,十六转十进制

本文详细介绍了进制的概念,包括二进制、八进制、十进制和十六进制之间的相互转换方法,并深入解析了Java中常见数据类型的存储原理及范围,如byte、short、int和long。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是进制

进制:就是进位制,规定的一种进位方法。对于任何一种进制 X ,标识在某一位上的数运算时,逢X进一。
二进制:逢2进1,用0和1表示;
八进制:逢8进1,0-7;
十进制:逢10进1,0-9;
十六进制:逢16进1,0-9,A-F(10-15);
我们默认使用的是10进制计数。

2、二进制和十进制的相互转换
  • 二进制----->十进制:
  • 计算公式:系数 * 基数 ^ 权次(这个公式适用于任何进制到十进制的转换)
    权次:从右到左的角标,从0开始
 10100010 = 0*2^0 + 1*2^1 + 0*2^2 + 0*2^3 + 0*2^4 + 1*2^5 + 0*2^6 + 1*2^7
 		  =  0 + 2 + 0 + 0 + 0 + 32 + 0 + 128
 		  = 162

二进制的10100010 转换为十进制为162。

  • 十进制----->二进制:
  • 计算公式:基数 / 要转换到的进制,直到除尽或者余数为0,然后反向排列余数得到转换后的进制数(适用于十进制转换到其他任何进制)。
    十进制162转换为二进制:
    162 / 2 ---- 得 81----- 余 0
    81 / 2 ------得40 ------余 1
    40 / 2-------得20 ------余 0
    20 / 2-------得10 ------余 0
    10 /2 -------得5 ------- 余 0
    5 / 2 --------得2 ------- 余 1
    2 / 2 --------得1 ------- 余 0
    然后反向取值得到:10100010

其他进制和十进制的相互转换道理相同。

3、java常用类型能存储的大小:

计算机是使用二进制存储数据的,是已补码的形式存储的,一个字节(byte)占8位(bit),首位是表示符号位,0:正,1:负,不然计算机不知道正负。其余位数标识数值的大小,正数的补码就是原码,负数的补码是去除首位,其余位取反,然后结果加1,在变成负数。

  • byte:1个字节,8位能存储 -128 ~ 127
    01111111: 标识最大的正数值,10000000:标识最小的负数值。
    01111111变为十进制,去除首位,其余7位运算,得到最大值127:
1111111 = 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^6
		= 1 + 2 + 4 + 8 + 16 + 32 + 64
		= 127

而10000000首位为1标识负数,负数转换的时候去除首位,后面的按位取反得到反码计算结果然后加1,10000000去除首位然后取反得到1111111,转换为10进制:

1111111 = 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^6
		= 1 + 2 + 4 + 8 + 16 + 32 + 64
		= 127
		= 127 + 1(首位是负数所以结果在加1)
		= 128
		= -128(变成负数)

所以byte能存储数值的范围是 -128 ~ 127。

  • short:2个字节,16位,-32768~32767
  • int:4个字节,32位, -2^31 ~ 2^31-1
  • long:8个字节,64位,-2^63 ~ 2^63-1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值