精华内容
下载资源
问答
  • 二进制、十进制、十六进制理解

    千次阅读 2020-10-21 11:23:12
    1.如何理解二进制、十进制、十六进制 点击查看原文 1.1 十进制理解: 生活中我们遇到的绝大部分数据都是十进制的,比如7、24、30、365等,如果把它们按照个位、十位、百位分解,可以这样表示: 数值 ...

    目录:

    1.如何理解二进制、十进制、十六进制

    2.Java中实现二进制、十进制、十六进制转换

    3.Java &、&&、|、||、^、<<、>>、~、>>>等运算符

    4.int & 0xFF的含义

    5.为什么java中中文转byte字节数组出现负数


    1.如何理解二进制、十进制、十六进制

    点击查看原文

    1.1 十进制的理解:

    生活中我们遇到的绝大部分数据都是十进制的,比如7、24、30、365等,如果把它们按照个位、十位、百位分解,可以这样表示:

    数值

    个位

    十位

    百位

    7

    7

    0

    0

    24

    4

    2

    0

    30

    0

    3

    0

    365

    5

    6

    3

    把表格中的数值,用数学运算表达式表示是这样的:

    数值

    分解

    7

    1*7

    24

    10*2+1*4

    30

    10*3+1*0

    365

    100*3+10*6+1*5

    十进制是“逢十进一”的规则,例如数字9,已经是个位上能够表示的最大的数值了,如果要表示更大的数值,就需要突破个位,使用十位来组成一个“数字串”来表示了,比如10(十位上是1,个位上是0),因此对十进制的的加法可以这样理解:

    例如:8+7=15

    1. =8+(2+5)
    2. =8+2+5
    3. =10+5
    4. =15

    1.2二进制的理解

    二进制是“逢二进一”,也就是说二进制只有0、1两个数字来表示,遇到2时就需要向高位“进一”了,比如“24”使用二进制来表示就是“0001 1000”

    如果在书写或者程序中使用这样的表示方式,就太啰嗦了,且不便于 其他进制区分,所以有了一个来表示二进制的规定,就是0b(十六进制是0x来表示),比如刚才的“0000 0000 0001 1000”可以使用“0b00011000”。

    在十进制中像365这样的数值,我们可以这样理解:

    1. 365=100*3+10*6+1*5

    相应的在二进制中也有类似的规则,区别是:

    十进制是“逢十进一”,采用“个/十/百/千/......”的进位递增;

    二进制是“逢二进一”,采用“1/2/4/8/16/......”的进位递增

    下面以几个二进制数值来举例:


    把上面表格的表达方式用数学运算表达式表示的话,是这样的:

    其实根本就在于,十进制中相邻进制之间相差10倍,而二进制中相邻进制之间相差的是2倍,只要记住这点,然后使用十进制相似的规则去套就行了。

    1.3十六进制的理解

    在理解二进制的基础上来理解十六进制,只需要转换一些概念就行。

    十六进制是使用16个“数字”来表示的,由于0~9只有10个数字,因此就制定了A、B、C、D、E、F六个字母来表示剩余的几个数字,分别是10、11、12、13、14、15。

    简单来说,就是把四个二进制“数字”为一组,合起来用一个“十六进制”里的“数字”来表达。

    二进制的表达使用的是0b,十六进制的表达使用的是0x

    我们按照前边的十进制和二进制的方式来举例几个十六进制的数值:

    上面表格的表达方式用数学运算表达式表示的话,就是下面这样:

    请留意:0xA等于10,0xF等于15

    在二进制和十进制中,相邻进制之间相差的倍数分别为2倍和10倍,而在十六进制中从上表可以看出相邻进制之间相差倍数为16倍,也就是:

    “逢十六进一”,采用“1/16/256/4096/......”的进位递增。

    1.4补充信息

    针对上面的描述,补充一些信息:

    1. 书写二进制数值时,为了工整一般会补足四位

    例如:“0b110”一般写作“0b0110”

    1. 书写十六进制数值时,为了工整一般会补足两位或者四位

    例如:0x06(补足为两位),0x01FF(补足为四位)

    2.Java中实现二进制、十进制、十六进制转换

    Java中的Integer类提供了将int转为二进制、八进制、十进制、十六进制的方法,分别是:

    FormToMethod
    十进制十六进制Integer.toHexString(int i)

    十进制

    八进制Integer.toOctalString(int i)
    十进制二进制Integer.toBinaryString(int i)
    十六进制十进制Integer.valueOf("FFFF",16).toString()
    八进制十进制Integer.valueOf("876",8).toString()
    二进制十进制Integer.valueOf("0101",2).toString()

    通过Integer.parseInt()方法可直接将二进制、八进制、十六进制转为十进制

    parseInt(String s, int radix)

    使用第二个参数指定的基数,将字符串参数解析为有符号的整数。

    3.Java &、&&、|、||、^、<<、>>、~、>>>等运算符

    点击查看原文

    java运算大致分为逻辑运算符、算数运算符、位运算符和其他运算符:

    • 逻辑运算符:&&、||、!
    • 算数运算符:+、-、*、/、+=
    • 位运算符:^、|、&
    • 其他运算符:三元运算符

    3.1.1逻辑与(&&)

    &&逻辑与也称为短路逻辑与,先运算&&左边的表达式,一旦为假,后续不管多少表达式,均不再计算,一个为真,再计算右边的表达式,两个为真才为真

    举例:

    if(a == 0 && b==1)

    3.1.2逻辑或(||)

    逻辑或||的运算规则是一个为真即为真,后续不再计算,一个为假再计算右边的表达式。

    举例:

    if(a==0 || b==0)

    3.1.3逻辑非(!)

    即表示不等于

    举例:

    if(a != 0)

    3.1.4按位与(&)

    &按位与的运算规则是将两边的数转换为二进制位,然后运算最终值,运算规则即(两个为真才为真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0

    举例:

    int i = 3 & 5;

    3的二进制位是0000 0011 , 5的二进制位是0000 0101 , 那么就是011 & 101,由按位与运算规则得知,001 & 101等于0000 0001,最终值为1

    3.1.5按位或(|)

    |按位或和&按位与计算方式都是转换二进制再计算,不同的是运算规则(一个为真即为真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

    举例:

    int i = 6 | 2;

    6的二进制位0000 0110 , 2的二进制位0000 0010 , 110|010为110,最终值0000 0110,故6|2等于6

    3.1.6异或运算符(^)

    ^异或运算符顾名思义,异就是不同,其运算规则为1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

    举例:

    int i = 5 ^ 9;

    5的二进制位是0000 0101 , 9的二进制位是0000 1001,也就是0101 ^ 1001,结果为1100 , 00001100的十进制位是12

    3.1.7左移运算符(<<)

    凡位运算符都是把值先转换成二进制再进行后续的处理.

    举例:

    int i = 5 << 2;

    5<<2的意思为5的二进制位往左挪两位,右边补0,5的二进制位是0000 0101 , 就是把有效值101往左挪两位就是0001 0100 ,正数左边第一位补0,负数补1,等于乘于2的n次方,十进制位是20

    3.1.8右移运算符(>>)

    凡位运算符都是把值先转换成二进制再进行后续的处理.

    举例:

    int i = 5 >> 2;

    5的二进制位是0000 0101,右移两位就是把101左移后为0000 0001,正数左边第一位补0,负数补1,等于除于2的n次方,结果为1

    3.1.9取反运算符(~)

    取反就是1为0,0为1

    规律:正整数N取反结果为:负(N+1);负整数-N取反结果为:N-1

    举例:

    int i = ~5;

    5的二进制位是0000 0101,取反后为1111 1010,值为-6

    3.1.10无符号右移运算符(>>>)

    正数无符号右移

    无符号右移运算符和右移运算符的主要区别在于负数的计算,因为无符号右移是高位补0,移多少位补多少个0。

    举例:

    int i = 15 >>> 2;

    15的二进制位是0000 1111 , 右移2位0000 0011,结果为3

    负数无符号右移

    举例:

    long i = -6 >>> 3;

    -6的二进制是6的二进制取反再加1,6的二进制也就是0000 0000 0000 0000 0000 0000 0000 0110,取反后加1为1111 1111 1111 1111 1111 1111 1111 1010,右移三位0001 1111 1111 1111 1111 1111 1111 1111

    4.int & 0xFF的含义

    点击查看原文

    在将byte字节转为Hex十六进制时,会使用 & 0xFF将字节值处理一下,如下图所示:

    原因:

    Java基础数据类型长度:

    byte=1个字节=8位二进制

    计算机存储数据机制:正数存储的二进制原码,负数存储的是二进制的补码。  补码是负数的绝对值反码加1。

    对于正数(00000001)原码来说,首位表示符号位,反码 补码都是本身

    对于负数(100000001)原码来说,反码是对原码除了符号位之外作取反运算即(111111110),补码是对反码作+1运算即(111111111)

    举例:

    byte[]  b = new byte[5];

    b[0] = -12;

    而-12 的绝对值原码是:0000 1100  取反: 1111 0011  加1:  1111 0100

    byte --> int   就是由8位变 32 位 高24位全部补1: 1111 1111 1111 1111 1111 1111 1111 0100 ;

    0xFF的二进制表示就是:1111 1111。   高24位补0:0000 0000 0000 0000 0000 0000 1111 1111;

    -12的补码与0xFF 进行与(&)操作  最后就是0000 0000 0000 0000 0000 0000 1111 0100

    byte类型的数字要&0xff再赋值给int类型,其本质原因就是想保持二进制补码的一致性。

     

    当byte要转化为int的时候,高的24位必然会补1,这样,其二进制补码其实已经不一致了,&0xff可以将高的24位置为0,低8位保持原样。这样做的目的就是为了保证二进制数据的一致性。

    有人问为什么上面的式子中b[0]不是8位而是32位,因为当系统检测到byte可能会转化成int或者说byte与int类型进行运算的时候,就会将byte的内存空间高位补1(也就是按符号位补位)扩充到32位,再参与运算。

    5.为什么java中中文转byte字节数组出现负数

    点击查看原文

    GBK采用双字节8位表示dao,总体编码范du围为 8140 -- FEFE,首字节在zhi 81 -- FE 之间,尾字dao节在 40 -- FE 之间。

    ASCII是7位编码内,只使用前7位,第容8位补0,所以转换成整数始终为正数,而GBK是8位编码,也就是说一个字节中的第8位可以为1,如1010 1101,而将其转换成byte类型时,byte值为10101101,以补码存储,第8位被当成符号位,当然是负数了,值为:-83。

    “何”字的GBK编码是:BA CE(1011 1010 1100 1110),两个字节第8位都为1,对byte类型来说,都被理解为最高位符号位。这样值就变成-70和-50了。

    展开全文
  • 二进制和十进制的学习理解

    千次阅读 2019-02-01 21:57:47
    十进制与二进制都是数据记录的一种计数方法。对于一个数据,例如5555 可以写成5555 = 5 * 1000 + 5 *100+ 5*10+5*1  =5*10^3 +5*10^2+5*10^1+5*10^0 对于十进制来说,10就是十进制的基数,同理2就是二进数的基数。 ...
    十进制与二进制都是数据记录的一种计数方法。对于一个数据,例如5555
    可以写成5555 = 5 * 1000 + 5 *100+ 5*10+5*1
                =5*10^3 +5*10^2+5*10^1+5*10^0
    对于十进制来说,10就是十进制的基数,同理2就是二进数的基数。
    十进制的数位是10^n。二进制的位数是2^n。按照这个思路,我们还可以推导出⼋进制(以8为基数)、十六进制(以16为基数)等等计数法。
    
    
    ===============================华丽分割线=====================================
    java代码对数据进行实现二进制与十进制的换算
    ========================================================================
    import java.math.BigInteger;
    
    public class mach1 {
        /**
         * @return String
         * @Descrition: 十进制转化成二进制
         * param decimalSource
         */
        public static String decimalToBinary(int decimalSource) {
            BigInteger bi = new BigInteger(String.valueOf(decimalSource));
            //转化为BigInterger类型,默认为十进制
            return bi.toString(2);
            //参数2指定的是转化为二进制
        }
       /**
        * @Description: 二进制转换成十进制
        * @param binarySource
        * @return int
        */
        public static int binaryToDecimal(String binarySource) {
            BigInteger bi = new BigInteger(binarySource, 2);
            //转化BigInterger类型,参数2指定的是二进制
            return Integer.parseInt(bi.toString());
            //默认转化为十进制
        }
    
        public static void main(String[] args) {
            int a = 53;
            String b = "110101";
            System.out.println(String.format("数字%d的二进制是%s", a, mach1.decimalToBinary(a))); //获取⼗进制数53的⼆进制数
            System.out.println(String.format("数字%s的十进制是%d", b, mach1.binaryToDecimal(b))); //获取⼆进制数110101的⼗进制数
        }
    }
    
    展开全文
  • 进制转换:二进制、八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是...

    进制转换:二进制、八进制、十六进制、十进制之间的转换

    不同进制之间的转换在编程中经常会用到,尤其是C语言。

    将二进制、八进制、十六进制转换为十进制

    二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

    假设当前数字是N进制,那么:

    对于整数部分,从右往左看,第i位的位权等于Ni-1

    对于小数部分,恰好相反,要从左往右看,第j位的位权为N-j

    更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是1,那么它所表示的数值大小就是该位的位权。

    1) 整数部分

    例如,将八进制数字53627转换成十进制:

    53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

    从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    注意,这里我们需要以十进制形式来表示位权。

    再如,将十六进制数字9FA8C转换成十进制:

    9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

    从右往左看,第1位的位权为160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… n位的位权就为16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    将二进制数字转换成十进制也是类似的道理:

    11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

    从右往左看,第1位的位权为20=1,第2位的位权为21=2,第3位的位权为22=4,第4位的位权为23=8,第5位的位权为24=16 …… n位的位权就为2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    2) 小数部分

    例如,将八进制数字423.5176转换成十进制:

    423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… m位的位权就为 8-m

    再如,将二进制数字 1010.1101 转换成十进制:

    1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… m位的位权就为 2-m

    更多转换成十进制的例子:

    二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

    二进制:101.1001 = 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

    八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

    八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

    十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

    将十进制转换为二进制、八进制、十六进制

    将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

    1) 整数部分

    十进制整数转换为N进制整数采用“N取余,逆序排列”法。具体做法是:

    N作为除数,用十进制整数除以N,可以得到一个商和余数;

    保留余数,用商继续除以N,又得到一个新的商和余数;

    仍然保留余数,用商继续除以N,还会得到一个新的商和余数;

    ……

    如此反复进行,每次都保留余数,用商接着除以N,直到商为0时为止。

    把先得到的余数作为N进制数的低位数字,后得到的余数作为N进制数的高位数字,依次排列起来,就得到了N进制数字。

    下图演示了将十进制数字36926转换成八进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151J30K46.png

    从图中得知,十进制数字36926转换成八进制的结果为110076

    下图演示了将十进制数字42转换成二进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151K641Z0.png

    从图中得知,十进制数字42转换成二进制的结果为101010

    2) 小数部分

    十进制小数转换成N进制小数采用“N取整,顺序排列”法。具体做法是:

    N乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

    将积的整数部分取出,再用N乘以余下的小数部分,又得到一个新的积;

    再将积的整数部分取出,继续用N乘以余下的小数部分;

    ……

    如此反复进行,每次都取出整数部分,用N接着乘以小数部分,直到积中的小数部分为0,或者达到所要求的精度为止。

    把取出的整数部分按顺序排列起来,先取出的整数作为N进制小数的高位数字,后取出的整数作为低位数字,这样就得到了N进制小数。

    下图演示了将十进制小数0.930908203125转换成八进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91Q20520335.png

    从图中得知,十进制小数0.930908203125转换成八进制小数的结果为0.7345

    下图演示了将十进制小数0.6875 转换成二进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91QHI2I2.png

    从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011

    如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

    十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345

    十进制数字 42.6875 转换成二进制的结果为 101010.1011

    下表列出了前17个十进制整数与二进制、八进制、十六进制的对应关系:

    十进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    二进制

    0

    1

    10

    11

    100

    101

    110

    111

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    10000

    八进制

    0

    1

    2

    3

    4

    5

    6

    7

    10

    11

    12

    13

    14

    15

    16

    17

    20

    十六进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    A

    B

    C

    D

    E

    F

    10

    注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

    十进制0.51对应的二进制为0.100000101000111101011100001010001111010111...,是一个循环小数;

    十进制0.72对应的二进制为0.1011100001010001111010111000010100011110...,是一个循环小数;

    十进制0.625对应的二进制为0.101,是一个有限小数。

    二进制和八进制、十六进制的转换

    其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

    1) 二进制整数和八进制整数之间的转换

    二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919102I0949.png

    从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674

    八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919103A2R7.png

    从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011

    2) 二进制整数和十六进制整数之间的转换

    二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919104H9539.png

    从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C

    十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F91910553H50.png

    从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110

    C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

    展开全文
  • (1) 学习同步十进制计数器的原理和设计方法,理解它与二进制计数器的区别 (2) 掌握灵活运用Verilog HDL语言进行各种描述与建模的技巧和方法 2. 实验要求: (1) 使用合适的方法来编程实现规定特性的十进制同步减法...
  • 二进制转十进制 转化详解

    千次阅读 多人点赞 2019-07-23 10:29:33
    二进制如何转十进制十进制如何转二进制 十进制转二进制 转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二进制; 1、 正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位...

    博客引用处百度经验:
    二进制如何转十进制,十进制如何转二进制

    十进制转二进制
    转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二进制;

    1、 正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。
    也就是说,将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零就OK咧。哎呀,还是举例说明吧,比如42转换为二进制,如图1所示操作:
    在这里插入图片描述
    42除以2得到的余数分别为010101,然后咱们倒着排一下,42所对应二进制就是101010.如图2所示更直观的表达:
    在这里插入图片描述
    计算机内部表示数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时,高位补零,所说,如图3所示,42转换成二进制以后就是。00101010,也即规范的写法为
    (42)10=(00101010)2.
    在这里插入图片描述赶紧记住吧。
    2、 负整数转换成二进制
    方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42,如图4所示为方法解释。最后即为:
    在这里插入图片描述
    3、 小数转换为二进制的方法:对小数点以后的数乘以2,有一个结果吧,取结果的整数部分(不是1就是0喽),然后再用小数部分再乘以2,再取结果的整数部分……以此类推,直到小数部分为0或者位数已经够了就OK了。然后把取的整数部分按先后次序排列就OK了,就构成了二进制小数部分的序列,举个例子吧,比如0.125,如图5所示。
    在这里插入图片描述
    如果小数的整数部分有大于0的整数时该如何转换呢?如以上整数转换成二进制,小数转换成二进制,然后加在一起就OK了,如图6所示。
    在这里插入图片描述

    在这里插入图片描述
    4、 整数二进制转换为十进制:首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。
    先看首位是0的正整数,补齐位数以后,将二进制中的位数分别将下边对应的值相乘,然后相加得到的就为十进制,比如1010转换为十进制,方法如图7所示。

    在这里插入图片描述
    5、若二进制补足位数后首位为1时,就需要先取反再换算:例如,11101011,首位为1,那么就先取反吧:-00010100,然后算一下10100对应的十进制为20,所以对应的十进制为-20,方法如图8所示。

    在这里插入图片描述
    6、将有小数的二进制转换为十进制时:例如0.1101转换为十进制的方法:将二进制中的四位数分别于下边(如图9所示)对应的值相乘后相加得到的值即为换算后的十进制。

    在这里插入图片描述

    展开全文
  • 王昆扬的这本《实数的十进表示》讨论用十进制的无限小数来表示实 数的问题。十进制的无限小数,简称为十进数,初中学生就知道了。但他 们只能把它作为符号,凭感觉进行直观的想象。这些符号的真意只有接受 了“极限...
  • 此文档为《十进制小数和二进制小数相互转换》,让C++初学者更好的理解进制转换【独家出版,未经允许,禁止侵权】
  • 3.转二进制的功法理解。 4.举例消化,实战理解。 ---------------------------------------------------------------------------------------------------------------------------------------- 一:熟记...
  • 十进制整数字符串转换为十六进制表示形式,然后再返回到Matlab中。 版本1.2,2016年4月21日 下载资料库: 返回一个二维字符串数组,其中每行是S行中每个十进制整数字符串的十六进制表示形式。 S必须是仅包含十进制...
  • 本电路实现了同步十进制加法计数器的功能: 电路能准确地按照十进制加法计数的规律进行计数. 读者应深刻理解本例的分析和设计过程, 以为日后设计更为复杂的同步时序逻辑电路打下基础.
  • 二进制与十进制的相互转换(详解)

    千次阅读 2020-07-04 12:23:41
    1、十进制转二进制 十进制数不断除以2的余数,倒叙排列即是它的二进制数。 72➗2=36 ……0 36➗2=18 ……0 18➗2=9 ……0 9➗2=4 ……1 4➗2=2 ……0 2➗2=1 ……0 1➗2=0 ……1 倒叙排列余数:1001000 2、二进制转...
  • 十进制转十六进制

    2020-01-22 16:09:59
    BASIC-10 十进制转十六进制 1. 题目 2. 代码 import java.util.Scanner; /** * 十进制转十六进制 * 循环 整除 求余 判断 * 样例输入 * 30 * 样例输出 * 1E * @author 蔡先生 * */ public class Basic10 {...
  • 那么为什么只是二进制而不是十进制或者是其他进制的来作为计算机的底层呢? 这主要的原因由计算机的硬件有关,组成计算机系统的的逻辑电路只有两种状态,(接通和断开),只有两种发生的可能。当我们的计算机受到...
  • 蓝桥杯 基础练习(十) 十进制转十六进制 C语言

    千次阅读 多人点赞 2019-01-19 12:03:09
    十进制转十六进制 C语言 问题描述  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以...
  • sql二进制转十进制 This article aims to walk you through the SQL Decimal data type and its usage with various examples. We will also see how we can exercise this data type in SQL Server to help make ...
  • 小小的预备知识 1、>> 右移。      如果一个二进制数右移1位...例如,我们在对十进制5进行“>>”时,即“5 >> 3”时,我们可把5看为“0101”,即位运算为“0101 >> 2
  • 十进制转二进制原理

    2021-04-22 19:11:58
    1. 十进制整数转二进制 假设十进制正整数值为A,对应的二进制数为abcde。 众所周知,二进制数换算为十进制的公式如下: A = a(2^4) + b(2^3) + c(2^2) + d(2^1) + e(2^0) 所以咱们只要把a,b,c,d,e都取出来就能...
  • 二进制、十进制、八进制、十六进制 各代表的英文字母表示: 二进制是Binary,简写为B。八进制是Octal,简写为O。十进制为Decimal,简写为D。十六进制为Hexadecimal,简写为H。 python中,oct()函数将十进制转换为...
  • 十进制数转化为二进制数的两种方法

    万次阅读 多人点赞 2020-12-29 21:14:52
    如果我们要把十进制的150转化为二进制数,可以使用下面两种方法: 第一种方法:表格法 这种方法的核心思想就是用二进制的各位来“拼凑”出我们的十进制数。 我们先把二进制各位的位权列在表格里面。(我们如何...
  • 方法:十进制小数乘2取整,直到小数部分为零 (注:本文“十进制小数”不含整数部分,即整数部分为零) 解析: 首先,十进制数和所求的二进制表示方法表示的都是同一个数值,那么用十进制数乘2就相当于用其二进制乘2...
  • 将二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。假设当前数字是N进制,那么:对于整数部分,从右往左看,第 i 位的位权等于...
  • 不管是二进制进制 还是10进制 16进制 ,只是一种数字的不同表现方式 ,我们习惯性使用10进制 ,同样数字‘56’在不同进制下的换算理解举例: 在二进制 :举例,111000(2进制只有0和1 ,满2进1 ,02的5次方+12的4...
  • 十进制小数转换成二进制的原理理解 浮点数 发布于 2018-03-08 约 2 分钟 十进制小数转换成二进制的原理理解 在学习浮点数据类型的时候,涉及到了10进制的小数如何转成2进制数的问题(此文章不讨论精度问题,仅...
  • 二进制、八进制、十进制、十六进制关系及转换

    万次阅读 多人点赞 2019-02-21 21:20:22
    二进制,八进制,十进制,十六进制之间的关系是什么?浮点数是什么回事? 本文内容参考自王达老师的《深入理解计算机网络》一书&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;中国水利水电出版社&amp;amp;amp;amp...
  • 十进制转R进制 十进制转二进制 十进制整数转二进制 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到...
  • 二进制和十进制的相互转换相关说明116转换为二进制,再转换回十进制45.26转换为二进制,再转换回十进制0.8125转换为二进制,再换回十进制 相关说明 已经学习到了位运算符的部分,用二进制来比较好理解各位运算符的...
  • 用c语言实现八进制转化成十进制的一个简单的算法,只作为对于进制转换的理解
  • 十进制与八进制互相转换

    千次阅读 2020-07-23 20:50:03
    一、十进制转八进制 与十进制转二进制方法相似,用十进制数除以8取余数,商再除以8,直到商为0,余数由下到上依次排列即可,如136 136÷8=17 余0 17÷8=2 余1 2÷8=0 余2 所以八进制数为210 再看小数部分,与转二...
  • 点分十进制ip地址的理解

    千次阅读 2020-06-09 10:36:14
    点分十进制的IP是我们为了方便记忆的书写的形式,比如“192.168.1.1” ip地址共有4个十进制数,每个数占用1个字节,共占用4个字节,32位。 ip地址实际是一个占用4个字节的整型数。 点分十进制,是根据,点分十六...
  • 十进制转为二进制的两种方法

    千次阅读 2021-05-31 22:15:17
    十进制(以十为基础进位)数系的每一个位值有十个可能的值(0、1、2、3、4、5、6、7、8、9)。相反二进制(以二为基数进位)数系只有两个可能的值,即0和1。[1] 二进制系统是电子计算机的基本语言,真正的电脑程序员应...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 146,604
精华内容 58,641
关键字:

十进制怎么理解