javase-day09-进制、原码、补码

进制分类

对于整数,有四种表示方式

二进制:0,1 ,满2进1.以0b或0B开头。    0b11
十进制:0-9 ,满10进1.
八进制:0-7 ,满8进1. 以数字0开头表示。 010
十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。

进制计算

次方是从右往左数,索引是从0开始的

例:
283175

十进制:以10为底计算权值,逢十进一

计算过程:

	2 * 10 ^ 5 + 8 * 10 ^ 4 +3 * 10 ^ 3 +1 * 10 ^ 2 +7 * 10 ^ 1 +5 * 10 ^ 0 

十六进制:以16为底计算权值,逢16进一

例:

0x35
3 * 16 ^ 1 + 5 * 16 ^ 0= 48 + 5(十六进制) = 53(十进制)

二进制: 以2为底计算权值,逢2进一

例: 0110 1101

 0 * 2 ^ 7
	1 * 2 ^ 6+1 * 2 ^ 5+ 0 * 2 ^ 4+ 1 * 2 ^ 3+1 * 2 ^ 2+0 * 2 ^ 1+1 * 2 ^ 0 = 64 + 32 + 8 + 4 + 1 = 109

计算机内存地址为什么用16进制?

  1. 计算机硬件是0101二进制的,16进制刚好是2的倍数,更容易表达一个命令或者数据。十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示)

  2. 最早规定ASCII字符集采用的就是8bit(后期扩展了,但是基础单位还是8bit),8bit用2个16进制直接就能表达出来,不管阅读还是存储都比其他进制要方便

  3. 计算机中CPU运算也是遵照ASCII字符集,以16、32、64的这样的方式在发展,因此数据交换的时候16进制也显得更好

  4. 为了统一规范,CPU、内存、硬盘我们看到都是采用的16进制计算

16进制用在哪里?

  1. 网络编程,数据交换的时候需要对字节进行解析都是一个byte一个byte的处理,1个byte可以用0xFF两个16进制来表达。通过网络抓包,可以看到数据是通过16进制传输的。

  2. 数据存储,存储到硬件中是0101的方式,存储到系统中的表达方式都是byte方式

  3. 一些常用值的定义,比如:我们经常用到的html中color表达,就是用的16进制方式,4个16进制位可以表达好几百万的颜色信息。

进制转换

二进制–> 十六进制:四位一体
二进制–>十六进制:三位一体
二进制–>十进制:乘以2的幂数
十进制–>二进制:除以2取余数:余数短除法 – 除以二
在这里插入图片描述
在这里插入图片描述

原码、补码

概念

  1. 所有数字在计算机底层都以二进制形式存在。
  2. 计算机以补码的形式保存所有的整数。
    (1)正数的原码、补码都相同
    (2)负数的补码是其正数取反加1。
  3. 原码:直接将一个数值换成二进制数。
  4. Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;
    当是long类型时,二进制默认占64位,第64位是符号位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值