计算机中的进制

计算机进制(了解)

1、什么进制

进制:进制也就是进位制,是人们规定的一种进位方法。

  • 对于任何一种进制---N进制,就表示某一位置上的数运算时是逢N进一位

    举例:十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一 。

  • 计算机是信息处理的工具,任何信息必须转换成二进制形式数据后才能由计算机进行存储、运算、传输。
  • 进制转换一般是由系统自动完成的,不需要我们人为转换。比如:PHP中有专门的进制转换函数。

2、常用的进制

①二进制:有0和1两个基本数,运算规则:逢二进一。

如:(11)2表示十进制的3, 再加1,表示 (100)2   1010101101101010

②十进制:有0 1 2 3 4 5 6 7 8 9十个基本数,运算规则:逢十进一。

如:(19)10 再加1 (20)10

③八进制:由于二进制不方便记忆或操作,因此小型计算机引入了八进制

    有0 1 2 3 4 5 6 7八个基本数,运算规则:逢八进一。

如:(17)8 再加1 (20)8

二进制和八进制的对应关系:一个八进制数,用3位二进制来表示(R=2^3=8)

④十六进制:有0-9、A-F共16个基本数,运算规则:逢16进一。

如:(2F)16 再加1 (30)16

二进制和十六进制的对应关系:一个16进制,用4位二进制来表示(R=2^4=16

 

各种进制的对应关系表:

  1. 进制的转换规则

    十进制转成二进制

    1. 整数部分除2取余法。即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
    2. 小数部分乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。如果除不尽取一定的精度即可。

      二进制转成十进制

    3. 不分整数部分和小数部分
    4. 方法: 按权相加法,即将二进制每位上的数乘以权(每位上的指数常数),然后相加之和即是十进制数。
    5. 举例:将二进制(101.101)2 转成十进制
    6. 分析:1*2^2+0*2^1+1*2^0+1*2^-1+0* 2^-2 +1*2^-3=5.625(10)

    4、举例

    例如:将十进制10 .125转成二进制

    (1)整数部分:除2取余数。将整数部分每次都除以2,求(1010.001)2

    余数。一直除下去,直到商为0。读数时,从最后一位余数读起(从下往上读取)。

    (2)小数部分:乘2取整数。将小数部分每次乘以2,求整数。一直乘下去,直接小数部分为0。读数时,从上往下读取。

     

     

    二进制转成十进制:不分整数和小数

    转换的规则:按权相加法。将每一位上的数乘以它所在权(指数常数),将每位的结果相加求和,和就是10进制。

    提示:小数点向左是从0开始的正指数,小数点向右是从-1开始的负指数。

    (1010.001)2 =

    1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 + 0*2^-1 + 0*2^-2 + 1*2^-3

    = 8 +0 +2 +0 +0 +0+ +0.125

    = (10.125)10

计算机中的单位

bit    (位)            

一个二进制数中每一个数字就是一个bit

byte(字节)        

1byte=8bit

一个汉字占两个字节

如图:

 

计算机中的单位:

  • K            1K = 1024byte
  • M            1M = 1024K
  • G            1G = 1024M
  • T            1T = 1024G

转载于:https://www.cnblogs.com/nyxd/p/5352331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下用 C 语言实现进制转换的基本思路。 首先,我们需要明确两个概念:十进制和其他进制。十进制是我们平时使用的十个数字 0-9 组成的数字系统,而其他进制二进制八进制十六进制等都是由不同的数字组成的数字系统。 进制转换的基本思路是将一个数从一种进制转换成另一种进制。例如,将一个十进制数转换成二进制数,或者将一个十六进制数转换成十进制数。 下面是一个用 C 语言实现将十进制数转换成其他进制数的示例代码: ```c #include <stdio.h> #include <stdlib.h> void convert(int num, int base) { char *digits = "0123456789ABCDEF"; char result[100]; int quotient = num; int i = 0; while (quotient != 0) { result[i++] = digits[quotient % base]; quotient /= base; } printf("The result in base %d is: ", base); for (int j = i - 1; j >= 0; j--) { printf("%c", result[j]); } printf("\n"); } int main() { int num, base; printf("Enter a decimal number: "); scanf("%d", &num); printf("Enter the base to convert to (2-16): "); scanf("%d", &base); if (base < 2 || base > 16) { printf("Invalid base!\n"); exit(1); } convert(num, base); return 0; } ``` 这个程序实现了将一个十进制数转换成 2-16 进制数的功能。我们先输入要转换的十进制数,再输入要转换成的进制数,程序会检查进制数是否合法(在 2-16 范围内),然后调用 convert 函数进行转换。转换的过程,我们使用了一个 digits 数组存储各个进制数的字符形式,然后不断对 num 取模、除以 base,得到每一位的数字,最后将结果倒序输出即可。 希望这个示例代码能对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值