• 常见的进制转换与有符号数据表示法


    注:本内容参考与传智播客的Java内容的讲解,当然我整理了一下,做个记录~~~ 其中我认为很有价值的是有符号数据表示法,真正的去深入了解计算机,虽然我是一个渣渣~~~

    所谓进制就是指:就是位进制,是人们规定的一种进位方法。对于任何一种进制 --X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制就是逢八进一,十进制就是逢十进一,十六进制就是逢十六进一。

    一、常见的进制转换

    1、在Java中针对整数常量提供了四种表现形式
      (1)二进制 由0,1组成。以0b开头。
      (2)八进制 由0,1,...7组成。以0开头。
      (3)十进制 由0,1,...9组成。整数默认是十进制。
      (4)十六进制 由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。

    2、进制转换

    (1)其他进制到十进制(系数*基数^权)

      系数:就是每一个位上的数值

      基数:x进制的基数就是x

      权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。

    例子:

    0b10101 (这个数是二进制的一个数,因为是以0b开头的)

    =1*2^4 + 1*2^2 + 1*2^0

    =16 + 4 + 1

    =21

    0123(这个数是八进制的一个数,因为是以0开头的)

    =1*8^2 + 2*8^1 + 3*8^0

    =64 + 16 + 3

    =83

    0x3c(这个数是十六进制的一个数,因为是以0x开头的)

    =3*16^1 + c*16^0

    =48 + 12

    =60

    (2)十进制到其他进制的转换

      除基取余,直到商为0,余数反转。

    例子:

    52分别得到二进制,十进制,十六进制

    得到二进制:

    52 / 2 = 260

    26 / 2 = 130

    13 / 2 = 6                 1

    6  / 2 = 3                  0

    3  / 2 = 1                  1

    1  / 2 = 0                  1

    0b110100

    得到八进制:

    52 / 8 = 64

    6  / 8 = 0          6

    064

    得到十六进制:

    52 / 16 = 3       4

    3  / 16 = 0 3

    0x34

    3、进制转换的快速转换法

    (1)十进制和二进制间的转换

    8421码。

    (2)二进制到八进制,十六进制的转换

    二、有符号数据表示法

    在计算机内,有符号数据有三种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

      原码:就是二进制定点表示法。即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

      反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,符号位除外。

      补码:正数的补码与其原码相同,负数的补码是在其反码的末位加1。

    例子:

    1)已知某数X的原码为10110100B,试求X的补码和反码。

    符号位数值位

    原码:10110100

    反码:11001011

    补码:11001100

    2)已知某数X的补码11101110B,试求其原码。

    符号位数值位

    补码:11101110

    反码:11101101

    原码:10010010

  • 相关阅读:
    UE4 多人模式
    UE4 r.ScreenPercentage 150 导致的画面只有丢失
    UE4 3D Widget渲染优先级最高
    UE4 VR中血条的做法 3d widget
    UE4 源码bug 蓝图节点CreateSession导致的崩溃
    UE4 小技巧
    ue4(转载) 在VR中的按钮 Button In VR
    ue4 可点击座舱实现 Clickable cockpit
    两种排序方法(选择排序和冒泡排序)
    特殊的Josn格式
  • 原文地址:https://www.cnblogs.com/ssh-html/p/9736019.html
Copyright © 2020-2023  润新知