Skip to content

Latest commit

 

History

History
113 lines (57 loc) · 3.82 KB

计算机二进制.md

File metadata and controls

113 lines (57 loc) · 3.82 KB

计算机元件电路的高电平和低电平状态对应二进制的1和0。二进制逢二进位。


[TOC]

数据与内存

计算机中的基本数据单位是比特(bit),它以8位二进制数位为一个字节。

8bit=1Byte--内存地址Address

8位二进制的1:0000 0001 (不足的位以0补上)

其他存储单位

单位: B-KB-MB-GB-TB-PB-EB-ZB-YB

2的次方:0-10-10--30--40-50--60-70-80

计算机在同一时间内处理的一组二进制数称为一个计算机的“字”,(简称字,word)。存储一个字所需要的字节的长度称为字长(wordsize)。不同架构的计算机的字长不同,例如64位机上字长就是64个二进制位(64bit),即是8byte。

二进制运算

  • 加法

    0+1=1 1+0=1 0+0=0 1+1=1(1+1进位成10,见后文)

  • 乘法

    0*0=0 0*1=1 1*0=0 1*1=1

  • 减法

    0-0=0 1-0=1 1-1=0 0-1=1(0-1需要借位成10-1=1,见后文)

  • 除法

    0/1=0 1/1=1

如今的计算机中,只有加法器(实现起来更简单)。

十进制转二进制

正数

  • 整数:**除二取余,逆序排列。**该整数整除以2取余数部分,直到商为0为止,每一步的余数为0或1,将每一步所得的余数倒序连接得到二进制整数。

  • 小数:**乘二取整,顺序排列。**小数部分乘以2取整数部分,直到小数部分为0为止,每一步的整数为0或1,将每一步所得的整数按顺序连接起得到二进制小数部分。

    注意:小数部分末尾的有效位不是5则永远无法乘到小数部分为0,也就构成了循环。

示例:十进制7.25=7+0.25

​ 整数部分 7 ==> 7/2=3余1,3/2=1余1,1/2=0余1 倒序相连得到整数部分111

​ 小数部分 0.25 ==> 0.252=0.5 整数部分0, 0.52=1 整数部分1 顺序相连得到小数部分为01

​ 十进制 7.25 ==> 二进制 111.01

示例:十进制 0.1 ==> 二进0.000110011001100…… 1100的无尽循环

负数

在计算机中,定点数有3种表示法:原码、反码和补码。 0的原码反码补码都是0,正数的原码、反码和补码相同,下部赘述。

二进制负数以原码的补码形式表达。(为简短书写,以下均以4位二进制数做示例)

  • 原码:绝对值转换成二进制,最高位补1,最高位称为符号位

    -2 --> +2 --> 0010--> 1010

  • 反码:除符号位外每位取反,即0变1,1变0。 反码是相互的。

    ​ 1010 -- 1101

  • 补码:反码+1

    ​ 十进制-2 --> 原码 1010 --> 反码1101 -->加一 1101+0001=1110

    计算机中,为了在有限位数二进制数中表示正数和负数(当然还有0),于是将有限位可能表示的二进制数的个数对半分,一半表示正数,一般表示负数。正数和0均以0开头,而负数均以1开头。

    4位二进制数包括:

    ​ 从1111到1000的负数 -2^(4-1)

    ​ 0000 2^0

    ​ 从0001到0111的正数 2^(4−1)-1

二进制转十进制

正数

  • 整数:颠倒顺序,将每一位上的数字(0或1)乘以2的相应次方(2^n)得到一个积,将每一位上的乘积相加得到十进制整数。注意,第一位的相应次方n是0,然后依次加一即是1,2……

  • 小数:按照顺序,将每一位上的数字(0或1)乘以2的相应次方(2^n)得到一个积,将每一位上的乘积相加得到十进制小数。注意,第一位的相应次方n是-1(因为整数部分是0*2^0),然后以此减一即是-2,-3……

    示例:111.01=111+0.01 ​ 整数部分 111 ==> 12^0+12^1+12^2=1+2+4=7 ​ 小数部分 01 ==> 02^(-1)+1*2^(-2)=0+0.25=0.25 ​ 二进制111.01 ==>十进制7+0.25=7.25

负数

按照十进制转二进制方法倒算。 补码1110 --> 减一得到反码 1101 --> 原码0010 --> 十进制 2 -->还原负号 -2