精华内容
下载资源
问答
  • 二进制怎么表示十进制
    千次阅读
    2022-03-24 11:10:43

    参考资料:《深入理解计算机系统》原书第三版

    现代计算机存储和处理信息以二值形式表示,二进制数字也称位。一个字节由8位组成。二进制表示法中,它的值域为000000002到111111112;如果看做十进制数就是010到25510

    十六进制表示法

    1

    由于二进制太过冗长,十进制与位表示法转化太过麻烦,因此,用十六进制数来表示位模式较为方便。十六进制(简写成hex)使用0到9,以及A到F来表示16个可能的值。在十六进制表示法中,它的值域为0016到FF16

    十六进制数字01234567
    十进制值01234567
    二进制值00000001001000110100010101100111
    十六进制数字89ABCDEF
    十进制值89101112131415
    二进制值10001001101010111100110111101111

    在C语言中,以0x开头或以0X开头的数字常量被认为是十六进制的值。字符‘A’~‘F’可以是大写,也可以是小写,或者是大小写混合。在编写机器级程序的一个常见任务就是在位模式的十进制、二进制、十六进制之间的人工转换。一个简单窍门是记住十六进制数字A、C和F相应的十进制值,而对于把十六进制值B、D和E转化成十进制值,则可以通过计算它们与前三个值得相对关系来完成。

    比如,假设给你一个数字0x173A4C。可以通过展开每个十六进制数字,将它转换为二进制格式,如下所示:

    十六进制173A4C
    二进制000101110011101001001100

    反过来,如果给定一个二进制数字1111001010110110110011,可以通过首先把它分为每4位一组(从后往前)来转换为十六进制。不过要注意,如果位总数不是4得倍数,最左边得一组可以少于4位,前面用0补足。然后将每4位组转换为相应的十六进制数字:

    二进制1111001010110110110011
    十六进制3CADB3

    练习题1 完成下面的数字转换:
    A.将0x39A7F8转换为二进制。
    B.将二进制1100100101111011转换为十六进制。
    C.将0xD5E4C转换为二进制
    D.将二进制1001101110011110110101转换为十六进制。

    2

    当值x是2的非负整数n次幂时,也就是x=2n,我们很容易将x写成十六进制的形式。具体来讲,当n表示成i+4j的形式,其中0≤i≤3,我们可以把x写成开头的十六进制数字为1(i=0)、2(i=1)、4(i=2)或者8(i=3),后面跟随着j个十六进制的0。比如,x=2048=211,我们有n=11=3+4×2,从而得到十六进制表示0x800。

    练习题2 填写下表中的空白项,给出2的不同次幂的十进制和十六进制表示:

    n2n(十进制)2n(十六进制)
    95120x200
    19
    16384
    0x10000
    17
    32
    0x80

    3 十进制和十六进制之间的转换

    十进制和十六进制表示之间的转换需要使用乘法或者除法来处理一般情况。将一个十进制数x转换成十六进制,可以反复地用16除x,得到一个商q和一个余数r,也就是x=q·16+r。然后,我们用十六进制数字表示的r作为最低位的数字,并且通过对q反复进行这个过程得到剩下的数字。例如,考虑十进制314156的转换:

    314156 = 19634·16+12 (C)
     19634 = 1227·16+2   (2)
      1227 = 76·16+11    (B)
        76 = 4·16+2      (C)
         4 = 0·16+4      (4)
    

    从这里,我们能读出十六进制表示为0x4CB2C。

    反过来,将一个十六进制数字转换成十进制数字,我们可以用相应的16的幂乘以每个十六进制数字。比如,给定数字0x7AF,我们计算它对应的十进制值为
    7·162+10·16+15
    = 7·256+10·16+15
    = 1792+160+15
    =1967

    练习题3 一个字节可以用两个十六进制数字来表示。填写下表中缺失的项,给出不同字节模式的十进制、二进制和十六进制的值:

    十进制二进制十六进制
    00000 00000x00
    167
    62
    188
    0011 0111
    1000 1000
    1111 0011
    0x52
    0xAC
    0xE7
    旁注:十进制和十六进制之间的转换
        较大数值的十进制和十六进制之间的转换,最好是让计算机或者计算器来完成。
    
    

    练习题4 不讲数字转换为十进制或者二进制,试着解答下面的算术题,答案要用十六进制表示。提示:只要将执行十进制加减法所使用的方法改成以16为基数。(逢10进1变为逢16进1)(二进制同样的道理:逢2进1)
    A. 0x503c + 0x8 = ___________
    B. 0x503c - 0x40 = ___________
    C. 0x503c + 64 = ___________
    D. 0x50ea - 0x503c = __________

    练习题答案

    练习题1

    在我们开始查看机器级程序的时候,理解十六进制和二进制格式之间的关系将是很重要的。
    A. 将0x39A7F8转换成二进制:

    十六进制  3       9      A      7      F      8
    二进制   0011   1001   1010   0111   1111   1000
    

    B. 将二进制1100100101111011转换成十六进制:

    二进制    1100   1001   0111   1011
    十六进制     C      9      7      B
    

    C. 将0xD5E4C转换成二进制:

    十六进制    D      5      E      4      C
    二进制    1101   0101   1110   0100   1100 
    

    D. 将二进制1001101110011110110101转换成十六进制:

    二进制    10   0110   1110   0111   1011   0101   
    十六进制   2      6      E      7      B      5
    

    练习题2
    这个问题给你一个机会思考2的幂和它们的十六进制表示。

    n2n(十进制)2n(十六进制)
    95120x200
    19524 288800000x
    1416 3840x4000
    1665 5360x10000
    17131 0720x20000
    5320x20
    71280x80

    练习题3
    这个问题给你一个机会试着对一些小的数在十六进制和十进制表示之间进行转换。对于较大的数,使用计算器或者转换程序会更加方便和可靠。

    十进制二进制十六进制
    00000 00000x00
    167=10·16+71010 01110xA7
    62=3·16+140011 11100X3E
    188=11·16+121011 11000XBC
    3·16+7=550011 01110X37
    8·16+8=1361000 10000X88
    15·16+3=2431111 00110XF3
    5·16+2=820101 00100x52
    10·16+12=1721010 11000xAC
    14·16+7=2311110 01110xE7

    练习题4
    当开始调试机器级程序时,你将发现在许多情况中,一些简单的十六进制运算是很有用的。可以总是把数转换成十进制,完成运算,再把它们转换回来,但是能够直接用十六进制工作更加有效,而且能够提供更多的信息。

    A. 0x503c+0x8=0x5044。8加上十六进制c得到4并且进位1。
    B. 0x503c-0x40=0x4ffc。在第二个位数,3减去4要从第三位借1。因为第三位是0,所以我们必须从第四位借位。
    C. 0x503c+64=0x507c。十进制64(2的6次方)等于十六进制0x40。
    D. 0x50ea-0x503c=0xae。十六进制数a(十进制数10)减去十六进制数c(十进制数12),我们从第二位借16,
       得到十六进制数e(十进制数14)。在第二个数位,我们现在用十六进制d(十进制13)减去3,得到十六进制a(十进制10)。
    
    更多相关内容
  • 模拟十进制数到二进制数的转换过程,以LED来模拟各个二进制位,并能以动画方式模拟计数的过程。 选择手动方式时,将8个LED变成滑动条中数字的二进制(基数2)表示。例如,如果滑动条设置为数字10(在二进制表示为...
  • 该包旨在根据 IEEE 754 标准将浮点数从十进制转换为二进制格式。 当在 MATLAB 精度限制下执行计算或当对二进制字符串感兴趣时,这很有用,例如在遗传算法中。 该包由以下四个脚本组成。 float2bin:将十进制浮点数...
  • 本文给大家介绍的是一则使用C++实现读入二进制数并转换为十进制输出的代码,实现起来其实非常简单,C++本身就提供了二进制类库的,大家看代码吧,简单又实用。
  • 由于二进制数在C#中无法直接表示,所以所有二进制数都用一个字符串来表示 例如: 二进制: 1010 表示为 字符串:”1010″  int d = 10; //十进制二进制字符串 Console.WriteLine(Convert.ToString(d,2)); //...
  • bin() 返回一个整数 int 或者长整数 long int 的二进制表示。 下面是使用示例: >>>bin(10) '0b1010' >>> bin(20) '0b10100' 补充:十进制转8进制和16进制的方法: # -*- coding: UTF-8 -*- # 获取用户输入十进制...
  • 由于我们的数据本身就是用十进制表示的,所以十进制编码相当于不编码。相应的,我们的交叉方法与变异方法也要针对十进制做出相应改变。遗传算法十进制转为二进制matlab代码,该段代码适合初学遗传算法的小白进行学习
  • 十进制负数的二进制表示

    千次阅读 2018-04-04 11:22:36
    ...十进制转正整数转二进制应该都会,用C语言代码简单表示算法: #include<stdio.h> int main() { int dec=65535; /*positive decimalism number to binary ...

    文章出自个人博客https://knightyun.github.io/2018/04/04/negative-binary,转载请申明


    十进制转正整数转二进制应该都会,用C语言代码简单表示算法:

    #include<stdio.h>
    int main()
    {
    	int dec=65535; /*positive decimalism number to binary number*/
    	int bin[32];
    	int i=0, j;
    	while (dec>1)
    	{
    		bin[i]=dec%2;
    		dec/=2;
    		i++;
    	}
    	bin[i]=dec;
    	for (j=i; j>=0; j--) /*print binary number*/
    	{
    		printf("%d",bin[j]); 
    	}
    	printf("\n");
    }
    

    当然也有另外一种简单转换方法:

    #include<stdio.h>
    int main()
    {
    	int dec=65535;
    	char bin[32];
    	itoa(dec,bin,2); /*整型转换为字符串的函数,第一个参数是整型变量,
    	第二个是字符数组,用于存放字符串,第三个是进制,“2” 表示输出的字符串的进制格式,
    	可以这样记函数:“int to arr” */
    	printf("%s\n", bin);
    }
    

    但是,十进制负整数转换为二进制稍微复杂一些,分为三步:

    一、原码

    例如一个十进制数 5,二进制原码表示为:

    00000000 00000000 00000000 00000101

    大小为 4 字节,每一个 01 表示一个比特位(bit),所以八位为一字节,好像32位和64位系统都这样。一字节用十进制整数表示大小则是:2的8次方(256)。
    表示为十六进制是这样:ff ff ff ff(f=2^4-1)

    二、反码

    将二进制原码每一位取反,就是 0110
    上面 5 的反码表示为这样:

    11111111 11111111 11111111 11111010

    三、补码

    将反码最低位加 1 叫做补码,那么 5 的补码表示为:

    11111111 11111111 11111111 11111011

    注意反码末位是 1 时记得进位。

    所以十进制数 -5 的二进制表示为:

    11111111 11111111 11111111 11111011

    所以 -1 在计算机中表示为全 1,就是:

    11111111 11111111 11111111 11111111

    我64位计算机中是这样的:
    bin


    ** 技术文章推送**
    ** 手机、电脑实用软件分享**
    展开全文
  • //输出 11010 decbin (PHP 3, PHP 4, PHP 5) decbin — 十进制转换为二进制 说明 string decbin ( int number ) 返回一字符串,包含有给定 number 参数的二进制表示。所能转换的最大数值为十进制的 4294967295,其...
  • 题目:程序读入一个整数 n,假设 n 不会大于 1000,请输出 1 到 n 每个数字的二进制表示 1 的个数。

    题目一

    计算十进制数字在二进制表示 1 的个数

    举个例子:

    • 十进制数字为 1 时,它的二进制表示是 001,二进制表示 1 的个数为 1;
    • 十进制数字为 2 时,它的二进制表示是 010,二进制表示 1 的个数为 1;
    • 十进制数字为 3 时,它的二进制表示是 011,二进制表示 1 的个数为 2;
    • 十进制数字为 4 时,它的二进制表示是 100,二进制表示 1 的个数为 1;
    • 十进制数字为 5 时,它的二进制表示是 101,二进制表示 1 的个数为 2;
    • 十进制数字为 6 时,它的二进制表示是 110,二进制表示 1 的个数为 2;
    • 十进制数字为 7 时,它的二进制表示是 111,二进制表示 1 的个数为 3;

    时间复杂度 O(logn) 的解法

    对于这个题目比较容易想到的是如下代码:

    int count = 0;
    
    while(n != 0)
    {
        if(n % 2 == 1)
        {
            count++;
        }
        
        n = n >> 1;
    }
    

    上述代码主要做了两个步骤:

    • n % 2 表示对数字求模运算,也就是计算二进制的末尾是 1 还是 0,如果二进制的末尾是 1 ,则 count 自增,count 表示的是二进制表示 1 的个数;
    • n = n >> 1 表示把二进制往右移走一位,比如十进制数字 7 的二进制表示是 111 ,那么通过右移一位后,则变成 011。

    这个解决方式虽然能计算出二进制表示 1 的个数,但是我们可以发现这个解法的时间复杂度是 O(logn),比如当 n 为 7 时,它的二进制表示是 111,那么它将会循环 3 次,也就是非常接近 log 以 2 为底 7 的对数的值。


    题目二

    程序读入一个整数 n,假设 n 不会大于 1000,请输出 1 到 n 每个数字的二进制表示 1 的个数。

    时间复杂度 O(nlogn) 的解法

    可能有的小伙伴说,这题目二还不简单?直接把上面的解法,增加个 for 循环不就得了。

    int main() 
    {
    	int i, j, n, count;
    	
    	scanf("%d", &n);
    	
    	for(i = 1; i <= n; i++)
    	{
    		j = i;
    	    count = 0;
    		
        	while(j != 0)
        	{
                if(j % 2 == 1)
                {
                    count++;
                }
        
        		j = j >> 1;
        	}
        	
        	printf("number:%d, count:%d\n", i, count);
    	}
    
    	return 0;
    }
    

    假设输入 7,则输出结果:

    number:1, count:1
    number:2, count:1
    number:3, count:2
    number:4, count:1
    number:5, count:2
    number:6, count:2
    number:7, count:3
    number:8, count:1
    

    没错,用上述的解法增加个 for 循环,确实可以解决题目二的要求,这值得鼓励,但是程序的时间复杂度是时间复杂度 O(nlogn) ,运行效率不高,所以我们必须要有种精神,就是要用时间复杂度最少的方式去解决算法的问题,这样才能一次一次的进步。

    时间复杂度 O(n) 的解法

    请先观察下面的位运算性质:

    y = x & (x - 1)
    

    我们看到,x 和与 x -1 这两个数字做按位与运算,所以我们要以二进制的角度去思考这个问题。

    比如:

    • 假设 x 是 3,它的二进制是 011;
    • 那么 x - 1 就是 2,它的二进制是 010;
    • x & (x - 1) 运算后的二进制就是 010。

    那么 x & (x - 1) 实际效果等效于去掉 x 二进制表示中的最后一位 1,从而我们发现原来 y 变量与 x 变量在二进制表示中,只差一个 1。

    如果我们用一个数组 f 记录相应数字二进制表示中 1 的数量,那么 f[i] 数组存放的值是 i 这个数字二进制表示中 1 的数量,从而我们可以推导得到 f[i] = f[i & (i - 1)] + 1,也就是说 i 数字比 i & (i - 1) 数字的二进制表示中的 1 的数量要多一个,这样我们通过一步计算就得到 f[i] 的结果,也就是相应数字二进制表示中 1 的数量结果。

    代码如下:

    int main() 
    {
        int n,i;
        int f[1001];
        
        f[0] = 0;
        
        scanf("%d", &n);
    
        for(i = 1; i <= n; i++) 
        {
            f[i] = f[i & (i - 1)] + 1;
        }
        
        for(i = 1; i <= n; i++) 
        {
            printf("%d ", f[i]);
        }
        printf("\n");
        
        return 0;
    }
    

    这个程序的过程如下:

    • 首先先读入一个整数 n,代表要求解的范围;
    • 然后循环 n 次,每一次通过 f[i] = f[i & (i - 1)] + 1 计算得到 f[i] 的值,也就是数字的二进制表示 1 的个数;
    • 最后输出 1 到 n 中每个数字二进制表示中 1 的个数。

    针对这个解法,程序的时间复杂度是 O(n)。

    在这里插入图片描述

    展开全文
  • 小数的二进制十进制之间的转换

    万次阅读 2019-08-26 14:33:18
    0.125(十进制) 依次 × 2 取小数点左边第一个数,将取得的数按顺序排列在小数点右侧,例子如下: 0.125 × 2 = 0.25 0.25 × 2 = 0.5 0.5 × 2 = 1.0 0.125(十进制)——> 0.001(二进制) 0.001(二进制) ...

    0.125(十进制)2^{^{-2}}

    依次 × 2 取小数点左边第一个数,将取得的数按顺序排列在小数点右侧,例子如下:

    0.125 × 2 = 0.25

    0.25 × 2 = 0.5

    0.5 × 2 = 1.0

    0.125(十进制)——> 0.001(二进制)

    0.001(二进制)

    小数点右第一个数 × 2的-1次方,第二个数 × 2的-2次方,第三个数 × 2的-3次方并相加,例子如下:

    0 × 2^{^{-1}} = 0

    0 × 2^{^{-2}} =  0

    1 × 2^{^{-3}} = 0.125

    0 + 0 + 0.125 = 0.125

    如果不为纯小数,则小数部分和整数部分分开分别转化

     

     

     

    展开全文
  • 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码...二进制转换十进制公式:abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3(10)例如二进制数据110.11,其权的大小顺序为2^2、2^1、2^0...
  • 二进制如何转十进制?二进制转换十进制公式二进制转换为十进制的简便方法。原来方法:从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如: 01101011转十进制:第0位:1乘...
  • 此函数可用于将矩阵的十进制值转换为其相应的二进制形式表示。 如果您将此功能应用于 RGB 图像,请先将波段拆分为 R、B 和 G 波段,然后将该功能分别应用于每个波段。
  • 小数的二进制表示

    千次阅读 2021-07-26 09:06:32
    也许中学老师会告诉5、10、20等等的十进制数字怎么化成二进制数字,但又没有老师告诉你怎么将十进制的0.1变成二进制的小数呢?我们将一个十进制整数化为二进制是这样操作的:在十进制的计算法则中,将十进制数除以2...
  • 这些函数像内置的 MATLAB 函数 BIN2DEC 和 DEC2BIN 一样在二进制字符串和十进制数之间进行转换,但可以容纳负整数(通过二进制补码)和分数正负数(通过二进制补码固定点和字符串中的二进制小数点)。 请注意,许多...
  • Java, C, JS中不同进制数值的字面量前缀: 二进制(Binary)字面量前缀:0b或0B。 八进制(Octal):java:0,js:0或0o,c:%o 十进制(Decimal)字面量无前缀。 十六进制(Hex):0x或0X。 code result:
  • 本课程内容如下:第1节 二进制及十进制的由来第2节 二进制、十进制、八进制、十六进制的表示方法第3节 二进制和十进制之间的相互转换第4节 二进制和八...把十进制IP转换成二进制表示形式第7节 二进制算数运算和逻辑运算
  • 二进制十进制的讲解与转换

    千次阅读 多人点赞 2022-05-15 09:41:54
    十进制二进制之间的转换二进制十进制十进制二进制写在最后 哈喽,大家好!这是我的第一篇博客,就先来介绍一下自己吧,我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我...
  • //二进制: //由 0 和 1 两个数字组成,使用时必须以0b或0B(不区分大小写)开头 int a1 = 0b11; int a2 = -0b1001; int a3 = 0B10001; printf("十进制输出:a1 = %d, a2 = %d, a3 = %d\n", a1, a2, a3); //...
  • 除了常用的十进制表示法,Python 也支持二进制、八进制和十六...1. Python 二进制表示法如十进制中的 100 用二进制表示就是 1100100,那么 100 就可以用 0b1100100 来表示。>>> a = 0b1100100 # 二进制1100100>>> a ...
  • @return 返回与$binary_string参数所表示二进制数的十进制数等价值。 函数说明: bindec()将一个二进制数转换成Integer类型或者出于大小的需要,转换为float类型。 bindec()将所有的$binary_string值解释为无符号...
  • 二进制如何转换为十进制?

    千次阅读 2021-06-19 05:54:00
    二进制十进制数字转换使用加权列来标识数字的顺序以确定数字的最终值将二进制转换为十进制(base-2到base-10) )数字和背面是一个重要的概念,因为二进制编号系统构成了所有计算机和数字系统的基础。十进制或...
  • 怎么用python二进制转换十进制

    千次阅读 2020-11-26 03:00:07
    绒绒小梧桐2020-02-24 10:13:41二进制十进制,十进制二进制的算法十进制二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写 就是结果例如302302/2 = 151 余0151/2 = 75 余175/2 = 37 余137/2 = 18 余...
  • 二进制:以字母B结尾的0和1组成是数字序列,如01011101B 八进制:以字母O或者Q结尾的0-7数字序列组成的数,如723Q,723O 十进制:0-9数字序列组成的数,可以用字母D结尾,也可以没有结尾字母(没有结尾的数字...
  • 二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是...
  • 二进制是Binary,简写为B;八进制是Octal,简写为O;十进制为Decimal,简写为D;十六进制为Hexadecimal,简写为H。... 八进制和十六进制需通过二进制转换,再最后转换成十进制。 八进制与十六进制不可互转。 ...
  • 浮点数怎么用二进制表示

    千次阅读 2021-12-31 21:59:32
    浮点数怎么用二进制表示 对于浮点数在计算机中是怎么用二进制表示的,这个知识点让我学了很久,很多资料讲的特别抽象难懂,所以今天我想用自己的方式讲一讲。 学过 《计算机组成原理》 或者类似 《计算机系统》 这些...
  • python 二进制十进制之间的转换

    千次阅读 2020-11-21 03:03:13
    1、十进制二进制之间的转换(1)、十进制转换为二进制,分为整数部分和小数部分整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数。这个步骤一直...
  • 二进制十进制、十六进制理解

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 355,622
精华内容 142,248
关键字:

二进制怎么表示十进制