1 solutions

  • -1
    @ 2024-8-5 10:33:42
    四种常用的数制及它们之间的相互转换:
    进制	基数	基数个数	权	连数规律
    十进制	0、1、2、3、4、5、6、7、8、9	10	
    1
    0
    i
    10 
    i
     	逢十进一
    二进制	0、1	2	
    2
    i
    2 
    i
     	逢二进一
    八进制	0、1、2、3、4、5、6、7	8	
    8
    i
    8 
    i
     	逢八进一
    十六进制	0、1、2、3、4、5、6、7、8、9 、A、B、C、D、E、F	16	
    1
    6
    i
    16 
    i
     	逢十六进一
    进制的标识
    方法一:用一个下标来表明
    
    例如:十进制
    (
    10
    )
    10
    (10) 
    10
    ​
      二进制 
    (
    10
    )
    2
    (10) 
    2
    ​
      十六进制 
    (
    10
    )
    16
    (10) 
    16
    ​
      八进制
    (
    10
    )
    8
    (10) 
    8
    ​
     
    
    方法二:用数值后面加上特定的字母
    
    例如:十进制10D(D可省略)、二进制10B、十六进制10H、八进制10O
    
    进制转换
    十进制数转换为二进制数、八进制数、十六进制数的方法:短除反取余法
    
    二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和法
    
    进制间的相互转换:
    (1)二进制转十进制
    方法:“按权展开求和”
    
    例:
    (
    1011.01
    )
    2
    =
    (
    1
    ×
    2
    3
    +
    0
    ×
    2
    2
    +
    1
    ×
    2
    1
    +
    1
    ×
    2
    0
    +
    0
    ×
    2
    -
    1
    +
    1
    ×
    2
    -
    2
    )
    =
    (
    8
    +
    0
    +
    2
    +
    1
    +
    0
    +
    0.25
    )
    (1011.01) 
    2
    ​
     =(1×2 
    3
     +0×2 
    2
     +1×2 
    1
     +1×2 
    0
     +0×2 
    -1
     +1×2 
    -2
     )=(8+0+2+1+0+0.25)
    
    =(11.25)10
    
    规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依次递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
    
    注意:不是任何一个十进制小数都能转换成有限位的二进制数。
    
    (2)十进制转二进制
    整数部分:“除以2取余,逆序排列”(短除反取余法)
    
    例:
    (
    57
    )
    10
    =
    (
    111001
    )
    2
    (57) 
    10
    ​
     =(111001) 
    2
    ​
     
    
    57÷2=28……1
    
    28÷2=14……0
    
    14÷2=7……0
    
    7÷2=3……1
    
    3÷2=1……1
    
    1÷2=0……1
    
    小数部分:“连续乘以基数R后,正取整数。”(乘基(正)取整法。)
    
    例:
    (
    0.625
    )
    10
    =
    (
    0.101
    )
    2
    (0.625) 
    10
    ​
     =(0.101) 
    2
    ​
     
    
    0.625*2=1.25.....取整数部分1
    
    0.25*2=0.5.....取整数部分0
    
    0.5*2=1.0.....取整数部分1
    
    当小数部分为0时结束。
    
    (3)二进制与八进制和十六进制间转换
    十六进制是由0~15这些基本数字组成,其中最大的15对应的二进制为1111,所以四位二进制表示一位十六进制。同理三位二进制表示一位八进制。
    
    二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制数的数字表示,不足3位的要用“0”补足3位,就得到一个八进制数.
    
    八进制数转换成二进制数:把每一个八进制数转换成3位的二进制数,就得到一个二进制数。
    
    例:将八进制的37.416转换成二进制数:
    
    37.416
    
    011111.100001110
    
    即:
    (
    37.416
    )
    8
    =
    (
    11111.10000111
    )
    2
    (37.416) 
    8
    ​
     =(11111.10000111) 
    2
    ​
     
    
    例:将二进制的10110.0011转换成八进制:
    
    010110.001100
    
    26.14
    
    即:
    (
    10110.011
    )
    2
    =
    (
    26.14
    )
    8
    (10110.011) 
    2
    ​
     =(26.14) 
    8
    ​
     
    
    二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右,每4位为一组用一位十六进制数的数字表示,不足4位的要用“0”补足4位,就得到一个十 六进制数。
    
    十六进制数转换成二进制数:把每一个十六进制数转换成4位的二进制数,就得到一个二进制数。
    
    例:将十六进制数5DF.9转换成二进制:
    
    5DF.9=0101 1101 1111.1001
    
    即:
    (
    5
    D
    F
    .
    9
    )
    16
    =
    (
    10111011111.1001
    )
    2
    (5DF.9) 
    16
    ​
     =(10111011111.1001) 
    2
    ​
     
    
    例:将二进制数1100001.111转换成十六进制:
    
    0110 0001.1110
    
    61.E
    
    即:
    (
    1100001.111
    )
    2
    =
    (
    61.
    E
    )
    16
    (1100001.111) 
    2
    ​
     =(61.E) 
    16
    ​
     
    
    注意:以上所说的二进制数均是无符号的数。这些数的范围如下表:
    
    无符号位二进制数位数	数值范围	十六进制范围表示法
    8位二进制数	0~255(255=2^8-1)	00H~FFH
    16位二进制数	0~65535(65535=2^16-1)	0000H~FFFFH
    32位二进制数	0~2^32-1	00000000H~FFFFFFFFH
    带符号数的机器码表示方法
    带符号二进制数用最高位的一位数来表示符号:0表示正,1表示负。
    
    含符号位二进制数位数	数值范围
    8位二进制数	-128~127
    16位二进制数	-32768~+32767
    32位二进制数	-2147483648~+2147483647
    编码
    ASCII码(American Standard Code for Information Interchange)美国标准信息交换代码,现成为世界交换代码标准。
    
    ASCII 码是一种用 8 个比特组成的二进制编码(即一个字节),用于表示128个国际通用字符。
    
    位置	分类	可见性
    0~31,127	控制字符或通信专用字符	N
    32	空格	Y/N
    33~47,58~64,94~96,126	特殊字符(除字母/数字/空格/控制字符外的其他字符)	Y
    48~57	数字(按大小升序)
    65~90	大写字母(按字母表升序)
    97~122	小写字母(按字母表升序)
    补:
    2
    8
    =
    256
    ,
    2
    7
    =
    128
    2 
    8
     =256,2 
    7
     =128,这是因为在 ASCII 码中,把二进制最高位为 0 的数字都称为基本的 ASCII 码,其范围是 0 ∼ 127;把二进制最高位为1的数字都称为拓展的 ASCII 码,其范围是 0 ∼ 256。
    
    补:一个汉字在计算机中占2个Byte。
    
    机器数与真值
    计算机中要处理的整数有“无符号”和“有符号”之分,“无符号”整数顾名思义就是不考虑正负的整数,可以直接用二进制表示,故只讨论“有符号”整数。
    
    为简化机器中数据的运算操作,人们采用了原码、反码、补码等几种方法对数值位和符号位统一进行编码:
    
    ① 原码:
    
    将一个整数表示成符号位+二进制串。符号位上,0表示正数,1表示负数。就是用第一位表示符号,其余位表示值,即机器数。
    
    [+1]原=00000001
    
    [-1]原=10000001
    
    我们发现用原码表示,让符号位也参与计算,对于减法来说,结果是不正确的。这也就是为何计算机内部不使用原码表示一个数。为了解决原码做减法的问题,出现了反 码.
    
    ② 反码:
    
    正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反,即0变1,1变0。
    
    [+1]=[00000001]原=[00000001]反
    
    [-1]=[10000001]原=[11111110]反
    
    我们发现反码计算的结果与正确结果差1,所以负数在反码的基础上+1就可以解决这个问题。
    
    ③ 补码:
    
    正数的补码就是其本身;负数的补码是在其反码的基础上+1
    
    [+1]=[00000001]原=[00000001]反=[00000001]补
    
    [-1]=[10000001]原=[11111110]反=[11111111]补
    
    逻辑运算
    逻辑非:!或¬,操作数的反值(!1=0,!0=1)。
    逻辑与:&&或∧,全部操作数都为真,结果才为真(1∧1=1,1∧0=0,0∧1=0,0∧0=0)。
    逻辑或:||或∨,至少一个操作数为真,结果才为真。(1∨1=1,1∨0=1,0∨1=1,0∨0=0)
    运算优先级:逻辑非>逻辑与>逻辑或。
    可以简单理解为:非(乘方)>与(乘/除法)>或(加/减法)。
    
    按位与:&,参加运算的两个数,按二进制位进行“与”运算。如果两个相应位同时为1,该位结果为1,否则为0。(负数以补码形式参加运算)
    按位或:|,参加运算的两个数,按二进制位进行“或”运算。如果两个相应位有至少一个1,该位结果为1,否则为0。(负数以补码形式参加运算)
    按位异或:^(注意与“逻辑与”区分)或xor,参加运算的两个数,按二进制位进行“异或”运算。如果两个相应位为“异”(值不同),则该位结果为1,否则为0。(负数以补码形式参加运算)
    特别的,在进行按位运算时,如果位数不够,需要在位数少的数前补0。
    
    例如:13 |2=1101|0010=1111。
    
    逻辑表达式:由逻辑运算组合而成,返回值只有 T(True) 和F(False),C++中0表示假、非0表示真。
    
    • 1

    Information

    ID
    3
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    6
    Accepted
    4
    Uploaded By