2进制(计算机基础)

目录

2进制

权位法

补码

2进制原码和补码之间的运算

为什么使用16进制?

2进制运算

(1)按位与计算

(2)按位或计算

(3)按位取反

(4)按位异或

 进制之间的相互转换

(1)2进制转换为10进制(常用)

(2)8进制转换为10进制

(3)16进制转换为10进制

(4)n进制转换为10进制 

(5)2进制转换为8进制(常用)

(6)2进制转换为16进制(常用)

(7)10进制转换为2进制

(8)8进制转换为2进制

(9)16进制转换为2进制

(10)10进制转换为8进制

(11)10进制转换为16进制

(12)10进制转换为n进制


2进制


权位法

逢2进1的计数规则。

package demo;

public class Demo01 {

	public static void main(String[] args) {
		/*
		 * 2进制演示
		 */
		int n = 50;
		// 00000000 00000000 00000000 00110010
		System.out.println(n); //"50"
		//println 底层调用了 Integer.toString()
		//toString 方法将2进制转换为10进制字符串
		
		//toBinaryString(n) 将数字n在内存中的
		//实际2进制进行输出, 输出时候高位的0被自动省略
		System.out.println(
			Integer.toBinaryString(n));
		
		for(int i=0; i<=100; i++) {
			System.out.println(
					Integer.toBinaryString(i));
		}
		//选取其中的25个手工计算其10进制值
		
		n = 50;
		n++;
		System.out.println(n); 
	}

}

补码

什么是补码:计算机中将固定位数2进制分一半作为"负数"的编码规则称为补码。

  • 为什么使用补码:

     1. 补码编码目的是解决"负数"的编码问题。
     2. 使用补码和很好的处理负数。

  • 用4位讨论补码:

    1. 固定位数:4位, 任何计算其结构始终保持4位数, 多余位自动溢出. 
    2. 高位为1的作为负数使用, 高位为0的作为正数
    3. 正数编码就是2进制值
    4. 负数编码从正数倒推编码
    5. 补码可以实现负数的计算

  • 补码的计算:补码 = ~原码 + 1.(原码取反就是反码,1变0,0变1。反码没什么用,就是为补码服务的!注意此公式不适合最小数(唯一一个不适合的),例如4位的最小值-8的表示1000,取反再加1后值为本身!)
  • 同理:原码 = ~补码+1.举例-3变为3,1101取反后0010,再加1为0011。
  • 补码中-1的表示:全是1的二进制码(原码里全是1的是最大值),例如4位二进制码-1的表示:0b 1111。8位二进制码表示:0b 1111 1111。
  • 如何快速读出补码:举例4位二进制码,先记住-1的表示0b 1111(全是1),举例0b 1010,看看在权位上少了几个1,权位为1的上面少了,权位为4的上面少了,所以一共少了的值为4+1=5。因为是比-1少的,再用-1减去这个值,就是补码所表示的数-1 - 5 = -6。
  • 有补码(负数)的情况下:最大值 + 1 = 最小值。举例7 + 1 = -8(10进制)。二进制0111 + 0001 = 1000。
  • 补码的问题

    1. 固定范围, 不能超范围计算, 超范围计算自动溢出! 
    - 扩展位数, 扩大范围, 尽量避免超范围计算
    2. 补码是计算机内部编码, 与人类交互时候转换算法转换.
    - 利用API转换, 将补码转换为10进制(正数/负数)

2进制原码和补码之间的运算

  • 举例我们使用计算器计算:50+1=51。而实际上计算机内部是这样计算的:

 

为什么使用16进制?

  • 使用16进制作为2进制的简写(缩写)!

    1. 2进制书写繁琐
    2. 16进制可以将2进制进行缩写
    3. 从最后一位开始, 每4位2进制数字,缩写为一个16进制数

2进制运算


(1)按位与计算

  • 位与运算符 “&”
  • 计算规则:两边都为1,结果才为1。

(2)按位或计算

  • 位或计算符“|”
  • 计算规则:有1则1。

(3)按位取反

  • 取反运算符“~”
  • 计算规则:1变0,0变1.

(4)按位异或

  • 异或运算符“^”\
  • 计算规则:相同为0,不同为1。

 进制之间的相互转换


(1)2进制转换为10进制(常用)

  • 举例说明:

2进制:0b 1011 1101

转换为10进制:1*2^{​{0}}+0*2^{​{1}}+1*2^{​{2}}+1*2^{​{3}}+1*2^{​{4}}+1*2^{​{5}}+0*2^{​{6}}+1*2^{​{7}}=189.

  • 低8位快速转换,把低8位的值背下来:

(2)8进制转换为10进制

举例说明:

8进制:0 7654

转换为10进制:4*8^{^{0}}+5*8^{^{1}}+6*8^{^{2}}+7*8^{^{4}}=4012.

  • 低4位快速转换,把低4位背下来:

(3)16进制转换为10进制

举例说明:0x 2af5

转换为10进制:5*16^{_{0}}+15*16^{_{1}}+10*16^{_{2}}+2*16^{_{3}}=10997.

  • 低4位快速转换,把低4位的值背下来:

(4)n进制转换为10进制 

举例:...xyz

通用公式:z*n^{0}+y*n^{1}+x*n^{2}+...

(5)2进制转换为8进制(常用)

  • 三位一体法(421法)


(6)2进制转换为16进制(常用)

  • 四位一体法(8421法)

(7)10进制转换为2进制

  • 除2取余法
  • 举例:123 转换为2进制为:ob 111 1011.

(8)8进制转换为2进制

  • 三位一体(421法查表格)
  • 举例:0 226转换为2进制为0b 010 010 110。

(9)16进制转换为2进制

  • 四位一体法(8421查表格)
  • 举例:0x 5a1f 转换为2进制为0b 0101 1010 0001 1111.

(10)10进制转换为8进制

  • 除8取余法

举例说明:10进制226转换为8进制为0 342。

  • 先转换为2进制,再转换为8进制。

举例说明:10进制先转换为2进制0b 11 100 010(除2取余法),再转换为8进制0 342(3位一体查表法)。

(11)10进制转换为16进制

  • 除16取余法

举例说明:10进制226转换为16进制为0x e2。

  • 先转换为2进制,再转换为16进制。

举例说明:10进制转换为2进制0b 1110 0010(除2取余法),再转换为16进制0x e2。(4位一体查表法)

(12)10进制转换为n进制

  • 除n取余法
  • 先转换为2进制,再转换为n进制。

最基础的一定要掌握牢靠,否则只会让人笑话!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值