计算机进制知识整理

计算机进制知识整理

基数(radix)

进制其实就是基数,大于或等于基数时,向高位进1。10进制基数就是10,二进制基数就是2,八进制(8)、十六进制(16)。

计算机为何用二进制?

计算机原件二极管通电时只有高低电频, 分别表示1和0。

十进制转二进制方法
  1. 除2求余法。最后将余数倒着写各位余数,即为二进制。
  2. 2?的和。 64 + 32 + 16 + 2 = 01110010 = 114
背诵记忆2的10次方以内的数据
key value key value key value
20 1 21 2 22 4
23 8 24 16 25 32
27 64 28 128 29 256
210 512 211 1024 211 2048
源码、补码和反码
  1. 原码:表示正数。
  2. 反码:原码取反,1变0,0变1。
  3. 补码:反码+1,正数的补码是本身,负数用补码表示。
带符号数和不带符号的数
  1. 带符号数。如果二级制的首位为1,则为负数。10110110,首位为1表示为负数,
  2. 不带符号的数。首位为0 ;(类mysql数据库中unsigned)
负数

负数用补码表示,10进制的负数转二进制,先求解对应正数,然后符号位定位为1,其余位取反+1。

十进制负数转二进制过程
  1. 先讲正数转为二进制。
  2. 将符号位定位为1.其余位取反+1
二进制负数转10进制
  1. 保持符号位不变
  2. 其余位数取反+1,得到原码。
为何负数用补码表示?
  1. 减法可以当做加法来运算。5-3=5+(-3) = 00000101 + (11111101) = 100000010 (高位溢出舍弃)= 00000010 = 2
  2. 0的表述实现统一。正0:00000000 负0:10000000 取反 11111111 再+1 得 100000000( 溢出的1被计算机舍弃后得)00000000,即正0和负0都为00000000。
逻辑运算符
  1. 与运算(&):遇 0 则 0
  2. 或运算(|):遇 1 则 1
  3. 取反(~):1变0,0变1
  4. 异或(^):不进位加,(相同为0,相异为1)
  5. 右移(>>):补符号位【正整数 除2】
  6. 左移(<<):补0【正整数 乘2】
  7. 无符号右移(>>>):补0
大端(big endian)与小端(little endian)
  1. 大端与小端指:超过一个字节的数在内存的存储顺序
  2. 低位在小地址----小端。大部分操作系统采用小端
  3. 高位在小地址----大端。网络序一般用大端

你可能感兴趣的:(计算机进制知识整理)