精华内容
下载资源
问答
  • 输入一个十进制正整数,将它对应的二进制数的各位反序,形成新的十进制数输出。 标码: #include <stdio.h> int main() { int x,y,t; scanf("%d",&x); y=0; while( x ){ t=x%2; y=2*y+t; x/=2; }...

    引例:
    输入一个十进制正整数,将它对应的二进制数的各位反序,形成新的十进制数输出。
    标码:

    #include <stdio.h>
    int main()
    {
      int x,y,t;
      scanf("%d",&x);
      y=0;
      while( x ){
        t=x%2;
        y=2*y+t;
        x/=2;
    
      }
      printf("%d\n",y);
      return 0;
    }
    

    其中最关键的一步是

    y=2*y+t;
    

    从此我们可以看到一个一般规律:
    对于十进制:我们用的是y=10*y+t来加上后面的数
    那么对于十进制以下的转换都可以用下面的公式来表示

    y=d*y+t;//d代表该进制的权
    

    对于大于十进制的进制转换问题,则需要对字母部分特殊处理

    展开全文
  • 计算机中不同进制数的表示在电子计算机的信息处理中,无论多么复杂的信息,例如,图片、音乐、视频等,在计算机内部都是仅用“0”与“1”两个简单...进位规则;位权规则,运算规则。这了区别不同数制表示的数,通常...

    计算机中不同进制数的表示

    在电子计算机的信息处理中,无论多么复杂的信息,例如,图片、音乐、视频等,在计算机内部都是仅用“0”与“1”两个简单数字表示的信息,对于在实际当中我们能理解的信息都是用这种数字进行了编码后向我们呈现的,这种数制叫做二进制。要了解计算机,首先要了解计算机中数的表示方法。

    任何一种数制都可以用以下四个规则来描述:

    基数规则;进位规则;位权规则,运算规则。这了区别不同数制表示的数,通常用右括另外的下标字母表示括号内的数制,十进制数用D表示,二进制用B表示,十六进制数用H表示。

    一、二进制

    用四个规则描述如下:二进制数只有“0”和“1”两个数字,基数是2,最大的数字是1,逢2进位,各位的权为以2为底的幂。例如,(0101101010)各位的权自至在依次为27、26、25、24、23、22、21、20。

    二进制数的算术四则运算规则,除进、借位外与十进制数相同。

    二进制加法规则

    0+0=0 1+0=1

    0+1=1 1+1=10

    二进制减法规则

    0-0=0 0-1=1-借位

    1-0=1 1-1=0

    二进制乘法规则

    0×0=0 1×0=0

    0×1=0 1×1=1

    例如:二进制数11110 101=110

    110

    101)11110

    -)101

    101

    -) 101

    00

    二进制的优点是:

    二进制只有“0”和“1”两数字,很容易表示。电压的高和低、 晶体管的截止与饱和、磁性材料的磁化方向等都可以表示为“0”和“1”两种状态。

    二进制数的每一位只有0和1两状态,只需要两种设备就能表示, 所以二进制数节省设备。由于状态简单,所以抗干扰力强,可靠性高。

    二进制的主要缺点是数位太长,不便阅读和书写,人们也不习惯。为此常用八进制和十六进制作为二进制的缩写方式。为了适应人们的习惯,通常在计算机内都采用二进制数,输入和输出采用十进制数,由计算机自己完成二进帛与十进制之间的相互转换。

    0+1=1 1+1=10

    二、十六进制与数制间的转换

    十六进制有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共十六个数字,其中A-F表示10-15的数字,基数是16,最大数字是15用F表示,逢16进位。

    十六进制数是二进制数的一种缩写方式,四位二进帛数有十六种组合,对应十进制数的0-15。二进制数转换为十六进制数的方法,从小数点开始左按四位分节,最高位和低位不足四位时,添0补足四位分节,然后用一个等值的十六进制数代换。反过来,十六进制转换成二进制的方法是:将每个十六进制数用4位二进制来书写,其最左侧或最右侧的可以省去。

    十进制数转换为二进制数,通常采基数乘除法。整数部分和小数部分分别转换,最后将两部分合起来,即为所转换的二进制数。

    整数部分转换用基数除法,即除以二进制数的基数2取余数,再将其商除以2取余数,重复这一过程直到商为0为止。第一次余数为二进制数的最低位,依次递增,最后一次余数为二进制数的最高位。

    小数部分转换用基数乘法,即乘以基数2取整数,将余下的小数再乘以2取整数,直到所需精度为止(小数部分的转换可能出现无限循环和无限不循环的情况)。第一次整数为二进制小数的第一位,依次递减,最后的整数为二进制小数的最低位。

    因为任何进制数的位权是用十进制数表示的,所以一个任何进制数都可以转化一个等价的十进制数?

    三、数制间的转换

    如何把十进制数转化为二进制、八进制?

    十进制数转换为二进制数规则:把十进制数用2一次次去除,直至商为0,将得到的余数从最后一次得到的余数依次读起即得,即“除2取余”。

    例如:将41变换为二进制

    1 0 1 0 0 1 余

    0 1 2 5 10 20 41

    即(41)D=(101001)B

    十进制转换为八进制规则:类似二进制,“除八取余”。

    例:41转换为八进制

    51 余

    0 5 41

    即41转换为八进制为51。

    如何把二进制、八进制转换为十进制

    二进制转化为十进制:(a1…an-1an)2

    =(a1×2^(n-1)+…+an×2^0)10

    八进制转化为十进制:(a1…an-1an)8

    =(a1×8^(n-1)+…+an-1×8^1+an×8^0)10

    例:(10001010)2=(1×2^7+0×2^6+0×2^5+0×2^4+1×2^3+0×2^2+1×2^1+0×2^0)10=(138)10

    (532)8=(5×8^2+3×8^1+2×8^0)10=(346)10

    如何使二进制、八进制相互转换

    二进制八进制规则:将十进制数从低位到高位分组,每三位一组,每组可代表0到7之间的数字,依次写下各组所代表的数字即得。

    例:(11001001)2=(011)(001)(001)

    3 1 1

    =(311)8

    八进制、二进制规则:

    将每位八进制数码分别用三位二进制数表示,并在这个0和1构成的序列去掉无用的前导0即得。

    例:(5163)=(101)(001)(110)(011)=(101001110011)2

    展开全文
  • 它的特点有两个:有0,1,2….9十个基本字符组成,十进制数运算是按“逢十进一”的规则进行的.在计算机中,除了十进制数外,经常使用的数制还有二进制数和十六进制数.在运算中它们分别遵循的是逢二进一和逢十六进一的...

    进位制 基本概念

    数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进制,二进制和十六进制。

    进位制 数制分类

    1. 十进制数

    人们通常使用的是十进制。它的特点有两个:有0,1,2….9十个基本字符组成,十进制数运算是按“逢十进一”的规则进行的.

    在计算机中,除了十进制数外,经常使用的数制还有二进制数和十六进制数.在运算中它们分别遵循的是逢二进一和逢十六进一的法则.

    2. 二进制数

    3. 二进制数有两个特点:它由两个基本字符0,1组成,二进制数运算规律是逢二进一。

    为区别于其它进制数,二进制数的书写通常在数的右下方注上基数2,或加后面加B表示。

    例如:二进制数10110011可以写成(10110011)2,或写成10110011B,对于十进制数可以不加注.计算机中的数据均采用二进制数表示,这是因为二进制数具有以下特点:

    1) 二进制数中只有两个字符0和1,表示具有两个不同稳定状态的元器件。例如,电路中有,无电流,有电流用1表示,无电流用0表示。类似的还比如电路中电压的高,低,晶体管的导通和截止等。

    2) 二进制数运算简单,大大简化了计算中运算部件的结构。

    二进制数的加法和乘法运算如下:

    0+0=0 0+1=1+0=1 1+1=10

    0×0=0 0×1=1×0=0 1×1=1

    由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数.

    3.十六进制数

    十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数0~15),十六进制数运算规律是逢十六进一,鹩谄渌剖剖氖樾赐ǔT谑挠蚁路阶⑸匣保叮蚣雍竺婕樱缺硎尽?/SPAN>

    例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。

    4. 数的位权概念

    5. 一个十进制数110,其中百位上的1表示1个102,既100,十位的1表示1个101,即10,个位的0表示0个100,即0。

    一个二进制数110,其中高位的1表示1个22,即4,低位的1表示1个21,即2,最低位的0表示0个20,即0。

    一个十六进制数110,其中高位的1表示1个162,即256,低位的1表示1个161,即16,最低位的0表示0个160,即0。

    可见,在数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,我们称这关系为数的位权。

    十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六进制数的位权是以16为底的幂。数位由高向低,以降幂的方式排列。

    进位制 进数制之间的转换

    1.二进制数、十六进制数转换为十进制数(按权求和)

    二进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”.

    例如:把(1001.01)2转换为十进制数。

    解:(1001.01)2

    =1×23+0×22+0×21+1×20+0×2-1+1×2-2

    =8+0+0+1+0.5+0.25

    =9.75

    把(38A.11)16转换为十进制数

    解:(38A.11)16

    =3×162+8×16+10×160+1×16-1+1×16-2

    =768+128+10+0.0625+0.0039

    =906.0664

    2.十进制数转换为二进制数,十六进制数(除2/16取余法)

    整数转换.一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到――简称除二取余法.

    例:将25转换为二进制数

    解:25÷2=12 余数1

    12÷2=6 余数0

    6÷2=3 余数0

    3÷2=1 余数1

    1÷2=0 余数1

    所以25=(11001)2

    同理,把十进制数转换为十六进制数时,将基数2转换成16就可以了.

    例:将25转换为十六进制数

    解:25÷16=1 余数9

    1÷16=0 余数1

    所以25=(19)16

    3.二进制数与十六进制数之间的转换

    由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的.所以,十六进制数与二进制数的转换是十分简单的.

    (1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位.

    例:将(4AF8B)16转换为二进制数.

    解: 4 A F 8 B

    0100 1010 1111 1000 1011

    所以(4AF8B)16=(1001010111110001011)2

    (2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位.

    例:将二进制数(111010110)2转换为十六进制数.

    解: 0001 1101 0110

    1 D 6

    所以(111010110)2=1D6H

    转换时注意最后一组不足4位时必须加0补齐4位

    展开全文
  • 一、进制转换 编程用十进制,十进制转换为二进制、八进制、十六进制In [135]: bin(23)Out[135]: '0b10111'In [136]: oct(23)Out[136]: '0o27'In [137]: hex(23)Out[137]: '0x17'也可以直接反向获取十进制In [146]: 0...

    一、进制转换

    1252882-20190119145842315-462478040.png

    编程用十进制,十进制转换为二进制、八进制、十六进制

    In [135]: bin(23)

    Out[135]: '0b10111'

    In [136]: oct(23)

    Out[136]: '0o27'

    In [137]: hex(23)

    Out[137]: '0x17'

    也可以直接反向获取十进制

    In [146]: 0b10111

    Out[146]: 23

    In [147]: 0o27

    Out[147]: 23

    In [148]: 0x17

    Out[148]: 23

    也可以用int函数来转换

    In [149]: int('0b10111', 2)

    Out[149]: 23

    In [150]: int('0o27', 8)

    Out[150]: 23

    In [151]: int('0x17', 16)

    Out[151]: 23

    二、位运算

    按位异或的3个特点:

    (1) 0^0=0,0^1=1 0异或任何数=任何数

    (2) 1^0=1,1^1=0 1异或任何数-任何数取反

    (3) 任何数异或自己=把自己置0

    按位异或的几个常见用途:

    (1) 使某些特定的位翻转

    例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。

    10100001^00000110 = 10100111

    (2) 实现两个值的交换,而不必使用临时变量

    例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:

    a = a^b;   //a=10100111

    b = b^a;   //b=10100001

    a = a^b;   //a=00000110

    & 按位与

    | 按位或

    ^ 按位异或

    ~ 按位取反

    << 按位左移

    >> 按位右移

    用途: 直接操作二进制,省内存,效率高

    1)<<按位左移

    各二进位全部左移n位,高位丢弃,低位补0

    92273281d3c6e3d366fed71e40b55f53793.png

    x << n 左移 x 的所有二进制位向左移动n位,移出位删掉,移进的位补零

    【注意事项】

    a. 左移1位相当于乘以2

    用途:快速计算一个数乘以2的n次方 (8<<3 等同于8*2^3)

    b.左移可能会改变一个数的正负性

    2)>>右移

    各二进位全部右移n位,保持符号位不变

    x >> n, x的所有二进制位向右移动n位,移出的位删掉,移进的位补符号位, 右移不会改变一个数的符号

    【注意事项】

    右移1位相当于除以2

    x 右移 n 位就相当于除以2的n次方

    用途:快速计算一个数除以2的n次方 (8>>3 等同于8/2^3)

    f24f321be22b00a7fa026494e240d0f9214.png

    3)& 按位与

    全1才1否则0 :只有对应的两个二进位均为1时,结果位才为1,否则为0

    4) | 按位或

    有1就1 只要对应的二个二进位有一个为1时,结果位就为1,否则为0

    5) ^ 按位异或

    不同为1 当对应的二进位相异(不相同)时,结果为1,否则为0

    6) ~ 取反

    ~9 = -10

    【为什么9取反变成了-10的说明】:

    9的原码 ==> 0000 1001 因为正数的原码=反码=补码,所以在 真正存储的时候就是0000 1001

    接下来进行对9的补码进行取反操作

    进行取反==> 1111 0110 这就是对9 进行了取反之后的补码

    既然已经知道了补码,那么接下来只要转换为 咱们人能识别的码型就可以,因此按照规则 ,把这个1111 0110 这个补码 转换为原码即可

    符号位不变,其它位取反==> 1000 1001

    三、例题

    1. 输入一个正数,输出该数二进制表示中1的个数

    知识点:把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0。那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。

    总结:把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0 。

    代码如下:

    def count(n):

    num = 0

    while n:

    n &= (n-1)

    num += 1

    return num

    2. 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n

    解决方法:第一步,求这两个数的与或;第二步,统计异或结果中1的位数。

    代码如下:

    def mton(m,n):

    yihuo = m^n

    count = 0

    while yihuo:

    yihuo &= (yihuo-1)

    count += 1

    print(count)

    3. 用一条语句判断一个整数是不是2的整数次方

    解决方法:一个整数如果是2的整数次方,那么它的二进制表示中有且只有一位是1,而其它所有位都是0 。根据前面的分析,把这个整数减去1后再和它自己做与运算,这个整数中唯一的1就变成0了。

    代码如下:

    def judgebinary(x):

    if x&(x-1) == 0:

    return True

    return False

    4.不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和

    示例:

    示例 1:

    输入: a = 1, b = 2

    输出: 3

    示例 2:

    输入: a = -2, b = 3

    输出: 1

    代码如下:

    def getSum(a, b):

    """

    :type a: int

    :type b: int

    :rtype: int

    """

    #位操作

    no_carry_sum=a^b #a与b不进位时的和,恰好与异或性质一样

    print(no_carry_sum)

    carry=(a&b)<<1 #a与b的和的进位,恰好是与或操作再左移一位

    print(carry)

    return sum([no_carry_sum,carry])#前两者之和

    res = getSum(12,3)

    print(res)

    总结:两个数的和可以通过将这两个数异或得到这个数不进位时的和,再将这两个数进行与或再左移一位,相当于进位的操作,再将这两个数相加,就可以得到两个数的和

    5.判断数字n的二进制数从右往左数第i位是否为1

    思路:1<

    用n与有特定位的指示数与或,就能判断n的特定位是否为1,【长数和短数与或只比较到短数的长度】

    举例:10的二进制数倒数第2位是否为1, 10--1010, 1<<1=2--10, 1010&10 = True

    代码如下:

    def isOne(n,i):

    print(n,1<

    return (n&(1<

    res = isOne(10,1)

    print(res) #True

    参考文献:

    展开全文
  • 不同进制间的转换

    2011-02-24 19:39:00
    在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同。 <br />二进制 <br />基数为2,逢2进1。在二进制中,使用0和1两种符号。 <br />八进制 <br />基数为8,...
  • 进制

    2019-10-08 04:35:58
    进制:01 ...它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码...
  • 在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同。二进制基数为2,逢2进1。在二进制中,使用0和1两种符号。八进制基数为8,逢8进1。八进制使用8种不同的符号,它们与二进制的转换...
  • 进制进制进制十六进制...二进制数据是用0和1两个数码来表示,例如:0101000进位规则是“逢二进一”,借位规则是“借一当二”八进制采用0,1,2,3,4,5,6,7八个数字,逢八进一十六进制用数字0到9和字母A到...
  • 进制数的运算规则 C语言 进位计数法是一种计数的方法,例如,十进制计数法就是目前最为常用的计数方法。一个 任意的十进制数可以表示为: arI arI一1an一2…ao.blb2b3…bm 它表示为:an×...
  • 它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数也是采用位置计数法,其位权是以2为底的幂。例如二进制数110.11,其权的大小顺序为2^2、2^1、2^0、2^-1、2^-2。对于有n位整数,m位小数的二...
  • 2)二进制的简写形式二、进制运算1)八进制运算表(1) 加法运算表(2)乘法运算表(3)八进制简单运算题三、数据宽度1)什么是数据宽度2)计算机中常用的基本数据宽度四、无符号数有符号数进制进制也就是进位计数制,是人为...
  • 满意答案sqq2125272013.04.11采纳率:46%等级:12已帮助:10556人编辑本段简介 20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制,同时证明了莱布尼兹的原理是正确的。...
  • 中计数采用了多种记数制,比如:十进制,六十进制(六十秒为一分,六十分为一小时,即基数为60,运算规则是逢六十进一),…….在计算机中常用到十进制数、二进制数、八进制数、十六进制数等,下面就这几种在计算机中常用的...
  • 它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数也是采用位置计数法,其位权是以2为底的幂。例如二进制数110.11,其权的大小顺序为2^2、2^1、2^0、2^-1、2^-2。对于有n位整数,m位小数的二...
  • 也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制相同,二进制有两个基数,十进制有十个基数,依次类推。 运算规则:运算规则就是进位或错位规则。例如对于二进制来说,该规则...
  • 进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制---X进制,就表示每一位置上的数...
  • 进制、八进制、十进制与十六进制 ...也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制相同,二进制有两个基数,十进制有十个基数,依次类推。 运算规则:运算规则就是进位
  • 进制

    2017-11-14 09:58:00
    它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则...
  • 进制之间如何转换?

    千次阅读 多人点赞 2019-11-22 23:33:51
    本文关键字:二进制、十进制进制转换、八进制、十六进制。大家最开始接触的数字和计算...根据相应的进制规则进行进位相同的一串数字在不同进制下也会对应不同的大小,所以在程序中都会对数字的进制有明确的标识。
  • 进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制—X进制,就表示每一位置上的数...
  • [GO语言基础] GO进位计数制(进制),标识符与关键字 (五)
  • 计算机进制转换:二进制、八进制、十进制、十六进制 一、什么是进制 在生活中,我们通常都是使用阿拉伯数字计数的,也就是10...那么什么是进制呢,进制就是进位制,是人们规定的一种数字进位方法;对于任何一种进制...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,149
精华内容 3,659
关键字:

不同进制的进位规则是相同的