二进制

1.概念

进制:进位计数制

为什么用二进制

  1. 效率高
  2. 硬件实现简单
  3. 发展快,新计数发展不排除重新发展三进制。

2.进制转换

进制的基与权

基:基数,进制的位数,数码的个数
权:位权,每一位的固定权值大小。

二进制转十进制

1 1 0 1 基
8 4 2 1 权

  • 基乘权相加
  • 1101 = 11+02+14+18=13

十进制转二进制(除二逆序取余)

二进制转八进制

从右往左取3位,算出十进制值。链接起
1101=13

二进制转十六进制

从右往左取4位,算出十进制值。链接起
1101=D

3二进制的四则运算

156(+-*/)21=?         10011100            10101
10011100  
 + 10101
10110001
156+21=177      10110001
10011100  
 - 10101
10000111
156-21=135      10000111
    10011100  
    *  10101
    10011100
  10011100
10011100
110011001100
156*21=3276      110011001100
           111
10101|10011100
       10101
       100100
        10101
        011110
         10101
         01001
156÷21=7...9         111...1001 

4.原码反码和补码

为什么要有反码? 为了解决原码做减法的问题
为什么要有补码? 为了解决0有两个编码的问题,多出的一个编码用与多表示一个最低位

原码:是对自然正数(包括0)的二进制编码,正数在计算机中直接用原码进行存储。
反码:可以理解为是求补码的中间过程,反码=原码逐位取反。计算机并不存储反码。
补码:计算机求相反数的编码,补码=反码+1。负数在计算机中使用补码进行存储。
计算机通过补码进行减法运算和位运算

正数的源码=反码=补码
负数的源码反码和补码:

  1. 源码:符号位+真值
  2. 反码:符号位不变,其余数取反。
  3. 补码:反码+1

eg:

-36+38
-36原码=10100100
-36反码=11011011

-36补码=11011100
       +
 38原码=00100110
   结果=1 00000010->2
  =1 00110110   00110101  11001010

-31-22=-31+(-22)
-31原码=10011111
-22原码=10010110
 
-31反码=11100000
-22反码=11101001
 
-31补码=11100001
        +
-22补码=11101010 
           //补码转回反码转换原码转换十进制
   结果=1 11001011->11001010->10110101=-53

运算符

  • 或:| :一个为1则为1,两个为0才为0
  • 与:& 同时为1才为1,一个为0则为0
  • 非:~ 按位取反
  • 异或:^ 相同为1,不同为0
  • 带符号右移:>>正数补0负数补1。其值相当于除以2。-4>>=-2 1100->1110->1101->1010->-2;4>>=2 0100->0010->2
  • 无符号右移:>>>-4>>>=130;10000100>>>010000010=130
  • 有符号左移:>> 右边空出的位置补0,其值相当于乘以2。-4<<=-8;(-4原码)10000100->(-4反码,符号不变取反)11111011->(-4补码,反码+1)11111100->(-4补码向左移一位,右边补0)11111000->(转回反码-1)11110111->(转回原码)10001000=-8
posted @ 2022-06-08 19:15  chahune  阅读(414)  评论(0编辑  收藏  举报