精华内容
下载资源
问答
  • 二进制表示法在计算机科学中很重要,计算机中存储的所有...十进制的数字如何转换二进制的,举几个例子就明白了:图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/将17作为被除数,除以2...

    二进制表示法在计算机科学中很重要,计算机中存储的所有值都以一串二进制数字,即0和1的形式存在。 如果无法在通用表示形式和二进制数字之间来回转换,我们将需要以非常奇怪的方式与计算机进行交互。

    十进制的数字如何转换成二进制的,举几个例子就明白了:图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/

    将17作为被除数,除以2,每次所得的余数有两种可能,0或者1. 最后将余数从先到后依次排列,即得到二进制代表的数。最高次的为MSB,最低次的为LSB. 图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/

    References:https://www.electronics-tutorials.ws/binary/bin_2.html​www.electronics-tutorials.ws

    As the decimal number is a weighted number, converting from decimal to binary (base 10 to base 2) will also produce a weighted binary number with the right-hand most bit being the Least Significant Bit or LSB, and the left-hand most bit being the Most Significant Bit or MSB, and we can represent this as:

    由于十进制数是一个加权数,因此从十进制到二进制(从10到2)的转换也将产生一个加权的二进制数,其中最右边的位是最低有效位LSB,而最左边的位 是最高有效位或最高有效位,我们可以将其表示为MSB.

    两个网站详细介绍转换过程:https://www.wikihow.com/Convert-from-Decimal-to-Binary​www.wikihow.comBase Conversion Tool​www.mathsisfun.com

    但是,我们如何轻松地将整数值转换为二进制数呢? 答案是用“除以2”的算法,该算法使用堆栈来跟踪二进制结果的数字。

    思路:图片来自http://www.pas.rochester.edu/~rsarkis/csc162/_static/lectures/Stacks.pdf

    二进制算法:假定我们以大于0的整数作为开始的数字。

    然后,将十进制数连续除以2,并记录余数。

    第一次除以2可得到值是偶数还是奇数的信息。

    -----偶数值的余数为0。它的一位数字为0。

    -----奇数值将为1的余数,而数字1则为一位。

    将二进制数构建为数字序列:第一个余数实际上是序列中的最后一位,最后一个余数是序列中的第一位。

    我们再次看到了反转属性,表明堆栈很可能是解决问题的适当数据结构。

    下面的Python代码实现了2分算法。

    函数divide_by_2将一个十进制数的参数并将其重复除以2。

    第 行使用内置的模运算符%提取余数,然后第 行将其加入堆栈。

    在除法过程达到0之后,将在第-行中构造一个二进制字符串。

    第 行创建一个空字符串。 二进制数字一次从堆栈中弹出,并附加到字符串的右端。 然后返回二进制字符串。

    二进制转换算法可以轻松扩展,以针对任何基数执行转换。 计算机科学使用许多不同的编码。 其中最常见的是二进制,八进制(基数8)和十六进制(基数16)。

    当我们超出基数10时,不能再简单地使用余数了,因为它们本身被表示为两位十进制数。相反,我们需要创建一组数字来表示超出9的那些余数。解决此问题的方法可以将数字集扩展为包括一些字母字符。例如,十六进制将十个十进制数字与前十六个字母字符一起用于16个数字。为实现此目的,将创建一个数字字符串,将数字存储在其相应位置。 0在位置0,1在位置1,A在位置10,B在位置11,依此类推。从堆栈中除去余数时,可以将其用于索引数字字符串,并且可以将正确的结果数字附加到答案中。

    展开全文
  • 二进制十进制数字转换使用加权列来标识数字的顺序以确定数字的最终值将二进制转换为十进制(base-2到base-10) )数字和背面是一个重要的概念,因为二进制编号系统构成了所有计算机和数字系统的基础。十进制或...

    二进制到十进制数字转换使用加权列来标识数字的顺序以确定数字的最终值

    将二进制转换为十进制(base-2到base-10) )数字和背面是一个重要的概念,因为二进制编号系统构成了所有计算机和数字系统的基础。

    十进制或“denary”计数系统使用Base-of-10编号系统,其中数字中的每个数字都取10个可能值中的一个,称为“数字”,从 0 到 9 ,例如。 213 10 (二百一十三)。

    但是,除了10位数(0到9)之外,十进制编号系统还具有加法运算( + ),减法( - ),乘法(×)和除法(÷)。

    在十进制系统中,每个数字的值都比其前一个数字大十倍,这个十进制数字系统使用一组符号 b ,以及一个基数 q ,确定一个数字内每个数字的权重。例如,六十分之六的权重低于六百分之六。然后在二进制编号系统中,我们需要一些方法将十进制转换为二进制以及从二进制转换为十进制。

    任何编号系统都可以通过以下关系总结:

    N = b i q i

    where:

    N 是一个实数正数

    b 是数字

    是基数值

    和整数( i )可以是正数,负数或零

    N = b n q n ... b'的子> 3 q 3 + b 2 q 2 + b 1 q 1 + b 0 q 0 + b -1 q -1 + b -2 q -2 ... etc。

    十进制编号系统

    在十进制中, base-10(den)或denary编号系统,当我们沿着从右到左的数字移动时,每个整数列具有单位,数十,数百,数千等的值。在数学上,这些值写为10 0 ,10 1 ,10 2 ,10 3 等。然后每个位置在小数点左边表示增加的正幂为10.同样,对于小数,当我们从左向右移动时,数字的权重变得更负,10 -1 ,10 -2 ,10 -3 等

    所以我们可以看到“十进制编号系统”的基数为10或 modulo-10 (有时称为MOD-10),十进制系统中每个数字的位置表示该数字的大小或重量为 q 等于“10”(0到9)。例如,20(二十)与说2 x 10 1 相同,因此400(四百)与说4 x 10 2 相同。

    任何十进制数的值将等于其数字之和乘以各自的权重。例如: N = 6163 10 (六千一百六十三)十进制格式等于:

    6000 + 100 + 60 + 3 = 6163

    或者可以写出反映每个数字的权重:

    (6×1000)+(1×100)+(6×10)+(3×1)= 6163

    或它可以用多项式形式写成:

    (6×10 3 )+(1×10 2 )+(6× 10 1 )+(3×10 0 )= 6163

    在此十进制编号系统示例中,最左边的数字是最高有效数字或MSD,最右边的数字是最低有效数字或LSD。换句话说,数字 6 是MSD,因为它的最左侧位置承载的权重最大,而数字 3 是LSD,因为它的最右侧位置承载的权重最小。

    二进制编号系统

    二进制编号系统是所有基于数字和计算机的系统中最基本的编号系统,二进制数遵循相同的设置规则作为十进制编号系统。但是与使用10的幂的十进制系统不同,二进制编号系统使用2的幂,给出从base-2到base-10的二进制到十进制的转换。

    数字逻辑和计算机系统仅使用两个用于表示条件,逻辑电平“1”或逻辑电平“0”的值或状态,并且每个“0”和“1”被认为是2的基数(bi)中的单个数字或“二进制编号系统“。

    在二进制编号系统中,二进制数字如 101100101 用字符串”1“和”0“表示,每个数字沿字符串从右到左的值是前一个数字的两倍。但由于它是二进制数字,因此它只能具有“1”或“0”的值,因此 q 等于“2”(0或1),其位置表示其重量字符串。

    由于十进制数是一个加权数,从十进制转换为二进制(基数10到基数2)也会产生加权二进制数,右边最多位为最低有效位或LSB,最左边的位是最高有效位或MSB,我们可以代表这个:

    二进制数的表示

    MSB

    二进制数字

    LSB

    2 8

    2 7

    2 6

    2 5

    2 4

    2 3

    2 2

    2 1

    2 0

    256

    128

    64

    32

    16

    8

    4

    2

    1

    我们在上面看到,在十进制数系统中,每个数字从右到左的权重增加了10倍。在二进制数系统中,权重如图所示,每个数字增加了一个因子 2 。然后第一个数字的权重为 1 ( 2 0 ),第二个数字的权重为 2 ( 2 1 ),第三个是 4 的重量( 2 2 ) ,第四个是 8 ( 2 3 )的权重,依此类推。

    例如,转换二进制到十进制数字将是:

    十进制数字值

    256

    128

    64

    32

    16

    8

    4

    2

    1

    二进制数字值

    1

    0

    1

    1

    0

    0

    1

    0

    1

    加在一起在由“ 1 ”表示的位置从右到左的所有十进制数值给出:(256)+(64)+(32)+(4)+(1)= 357 10 或三百五十七作为十进制数。

    然后,我们可以通过查找二进制的十进制等效值将二进制转换为十进制数字数组 101100101 2 并将二进制数字扩展为基数为 2 的系列,其等效值为 357 10 十进制或否定。

    请注意,在数字转换系统中,“下标”用于表示相关的基本编号系统,1001 2 = 9 10 。如果在数字后没有使用下标,则通常假设成为小数。

    重复除2方法

    我们已经看到上面如何将二进制数转换为十进制数,但我们如何将十进制数转换为二进制数。将十进制数转换为二进制数等效的简单方法是写下十进制数并连续除以2(二)得到结果,并给出“1”或“0”的余数直到最终结果等于零。

    例如。将十进制数 294 10 转换为等效的二进制数。

    Number

    294

    如图所示,将每个十进制数除以“2”将得到一个结果加上一个余数。

    如果被分割的十进制数是偶数,那么结果将是整数并且余数将等于“0”。如果十进制数是奇数,那么结果将不会完全分割,余数将为“1”。

    二进制结果是通过将所有余数按最低有效位(LSB)排序得到的位于顶部,最重要位(MSB)位于底部。

    除以2

    结果

    147

    余数

    0(LSB)

    除以2

    结果

    73

    余数

    1

    除以2

    结果

    36

    余数

    1

    除以2

    结果

    18

    余数

    0

    除以2

    结果

    9

    余数

    0

    除以2

    结果

    4

    余数

    1

    除以2

    结果

    2

    余数

    0

    除以2

    结果

    1

    余数

    0

    除以2

    结果

    0

    余数

    1(MSB)

    这种除以2的十进制到二进制转换技术给出十进制数 294 10 相当于 100100110 2 二进制,从右到左阅读。这种2分频方法也适用于转换为其他数字基础。

    然后我们可以看到二进制编号系统的主要特征是每个“二进制数字” “或”位“具有”1“或”0“的值,每个位的权重或值是从最低位或最低位(LSB)开始的前一位的两倍,这称为”总和“权重“方法。

    因此我们可以通过使用权重和方法或使用重复的2分频方法将十进制数转换为二进制数,并将二进制数转换为十进制通过查找其权重和。

    二进制数字名称&前缀

    二进制数可以加在一起,也可以像十进制数一样减去,结果根据所使用的位数组合成几个大小范围之一。二进制数有三种基本形式 - 位,字节和字,其中一位是单个二进制数字,一个字节是八位二进制数字,一个字是16位二进制数字。

    分类将各个位分成更大的组通常由以下更常见的名称引用:

    二进制数字位数(位) )

    通用名称

    1

    4

    半字节

    8

    字节

    16

    Word

    32

    双字

    64

    Quad Word

    此外,从 Binary转换为Decimal 或甚至从 Decimal转换为Binary ,我们需要注意不要混淆两组数字。例如,如果我们在页面上写入数字10,如果我们假设它是十进制数字,它可能意味着数字“十”,或者它可能同样是二进制中的“1”和“0”,这是等于上面加权十进制格式中的数字2。

    在将二进制数转换为十进制数并确定所使用的数字或数字是十进制数还是二进制数时,要克服此问题的一种方法是在最后一位数字后写一个称为“下标”的小数字,以显示该数字的基数正在使用的数字系统。

    因此,例如,如果我们使用二进制数字串,我们将添加下标“2”来表示基数为2,因此数字将写为 10 2 。同样,如果它是标准十进制数,我们将添加下标“10”来表示基数为10的数字,因此该数字将写为 10 10 。

    今天,随着微控制器或微处理器系统变得越来越大,现在将各个二进制数字(位)组合成8个,形成单个 BYTE 与大多数计算机硬件如硬驱动器和内存模块通常以兆字节或甚至千兆字节表示其大小。

    字节数

    通用名称

    1,024(2 10 )

    千字节(kb)

    1,048,576(2 20 )

    兆字节(Mb)

    1,073,741,824(2 30 )

    技嘉(Gb)

    a非常长的数字!(2 40 )

    太字节(Tb)

    二进制到十进制摘要

    A“ BIT “是源自 BI nary digi T

    十进制系统使用10个不同的数字,0到9给它一个10的基数

    二进制数是加权值从右到左增加的加权数

    二进制数字的权重从右到左翻倍

    十进制数可以通过使用权重和方法或重复的二分法来转换为二进制数

    当我们转换时数字从二进制到十进制,或十进制到二进制,下标用于避免错误

    将二进制转换为十进制(base-2到base-10)或十进制到二进制数(base10到base) -2)可以通过如上所示的多种不同方式完成。将十进制数转换为二进制数时,重要的是要记住哪个是最低有效位( LSB ),哪个是最高有效位( MSB )。

    在下一个关于二进制逻辑的教程中,我们将研究将二进制数转换为十六进制数,反之亦然,并显示二进制数可以用字母和数字表示。

    展开全文
  • 首先,您粘贴的上面的代码有很多缩进问题,下次您应该尝试修复这些缩进问题并再次运行您的程序,然后再...你需要的条件是-^{pr2}$第,第个while循环,不应该在第一个while循环的内部,它应该在外部,这样当所...

    首先,您粘贴的上面的代码有很多缩进问题,下次您应该尝试修复这些缩进问题并再次运行您的程序,然后再发布到这里。在

    其次,你的逻辑也是错误的,你不应该检查-while newNum == 1:

    在开始时,您正在设置newNum=decNum,除非您输入1,否则您的程序不会进入while循环。你需要的条件是-

    ^{pr2}$

    第二,第二个while循环,不应该在第一个while循环的内部,它应该在外部,这样当所有的计算都完成后,就可以打印出堆栈。而且,在循环开始之前,您甚至不需要第一个newNum=decNum。在

    我修复了你所有的缩进问题和逻辑问题,代码是-import sys

    class Stack ():

    def __init__(self):

    self.items=[]

    def push (self,item):

    self.items.append(item)

    def pop (self):

    return self.items.pop()

    def size(self):

    return len(self.items)

    s1= Stack()

    decNum= int(raw_input("Enter the decimal num : "))

    while decNum!=0:

    newNum= decNum%2

    decNum = decNum//2

    s1.push(newNum)

    while s1.size() != 0:

    a=s1.pop()

    sys.stdout.write(str(a))

    sys.stdout.flush()

    展开全文
  • 任意二进制转换为十进制

    千次阅读 2021-05-21 02:40:38
    任意位数二进制转换十进制数c语言程序写作而成程序简明易懂附加有程序运行结果任意二进制十进制数程序代码:#include#include#includelong float change(char str[],int n){int xsd,i;for(i=0;i{if(str[i]=='....

    任意位数二进制数转换成十进制数

    c语言程序写作而成

    程序简明易懂

    附加有程序运行结果

    任意二进制转十进制数

    程序代码:

    #include

    #include

    #include

    long float change(char str[],int n)

    {

    int xsd,i;

    for(i=0;i

    {

    if(str[i]=='.')

    {

    xsd=i+1;//xsd为小数点位置

    break;

    }

    }

    if(i==n)

    xsd=n+1;

    long float sum,zs=0,xs=0;

    for(int j=xsd-2,q=0;j>=0;q++,j--)

    {

    if(str[j]=='1')

    zs+=powf(2,q);

    }

    if(xsd!=n+1)

    {

    for(int k=xsd;k

    {

    int m=(xsd-k)-1;

    if(str[k]=='1')

    xs+=powf(2,m);

    }

    printf("二进制小数点在第 xsd=%d 位上!\n",xsd); printf("十进制小数部分值为:xs=%lf\n",xs); }

    printf("十进制整数部分值为:zs=%lf\n",zs);

    sum=zs+xs;

    return sum;

    }

    void main()

    {

    while(1)

    {

    char str[30];

    展开全文
  • 十进制转换为二进制数 C++

    千次阅读 2021-04-12 21:57:07
    十进制数转换为二进制数 C++前言一、十进制转换为二进制的数学算法二、代码实现1.设计转换函数transfer2.完整代码总结 前言 这篇文章和大家分享一下我个人对十进制数转换为二进制数的想法,目前暂时更新只整数十...
  • printf("请输入一个十进制整数:"); scanf("%d",&num); int a[10]; //这里改了 int i=0; int yushu; while(num>0) { yushu=num%16; a[i]=yushu; num=num/16; i++;/*关键的就在这里,这后面书上写的要用SWITCH,但是我...
  • 追答: #include int ShiToEr(int a,int* ... printf("对应的二进制: "); for(int j=i;j>=0;--j) printf("%d" ,b[j]); printf("\n"); return 0; } 那个负数好解决,但是那个小数的话,我还真没考虑过呢...值得思考
  • Im trying to make a binary string into a decimal. It will terminate if -1 is entered. I am stuck with using an array. It was suggested to use: public static int binaryToDecimal (String binaryString) ....
  • 文章目录#十进制转换为二进制数1、十进制整数转换为二进制整数2、十进制小数转换为二进制小数#浮点类型数据的存储#参考 #十进制转换为二进制数   十进制转换为二进制数时,由于整数和小数的转换方法不同,...
  • 依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。那么,在实际实现中,可以用int的一个数来存储最后的二进制,每次求余后把余数存储在int型数的低位,依次递增。public void binaryTo...
  • } int Empty(Stack s) //判断栈是否空 { if(s.base==s.top) return(1); else return(0); } int * Pop(Stack &s,int *e) //出栈 ,你的程序没有很大的问题,就是出栈函数有一点问题,这里改动了, //你对照你自己的...
  • C语言十进制转换为二进制

    千次阅读 2021-05-19 19:45:36
    这是一个C语言 do while 循环示例:统计十进制正整数 n 转换为二进制数后,其二进制序列中包含的 1 和 0 的个数。问题分析输入:一个正整数。输出:两个整数:1 的个数和 0 的个数。将十进制数 n 转换二进制数,...
  • 我正在尝试使用Java将用户输入的十进制转换为二进制数。我收到错误package reversedBinary;import java.util.Scanner;public class ReversedBinary {public static void main(String[] args) {int number;Scanner in...
  • 但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,在二进制前面加个负数符合。而计算机只能认识0 和 1,又怎么去加个额外的负数符号呢?于是我们就需要用0和1来表示负数。如果想要弄懂这...
  • 小数部分可利用该编程方法(详见Python-十进制的小数部分转换为其他进制数)进行转换。最后分别将转换之后的整数部分和小数部分写在一起即可。这里在前面编程方法的基础上(详见Python-十进制的小数部分转换为其他进制...
  • 计算机中十进制转换为二进制的另一方法-------“定位减权法”胡燏(四川建筑职业技术学院计算机系,618000)【摘要】本文从十进制与二进制的特点入手,介绍一种把十进制数转换为二进制的新方法。【关键字】十进制 ...
  • 问题描述[1 1 1 0 10 1 1 0 10 0 1 1 0]每两位3转换为一个十进制数,共5列,那么转换后是ceil(5/3)=2列。[7 16 11 2].问题分析1.每八个字符划分一个十进制,nwords=ceil(size(b,2)/8)2.按列处理每行的字符,只...
  • I'm making a project of converting decimal number into binary. But I have a problem that how can I convert any entered number into binary (I'm using array), here is my code:public void Decimal2Binary...
  • 利用一个函数实现十进制转换二进制,八进制,十六进制。利用的是栈的后进先出的思想。算法简单。#include#include#include#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OVERFLOW -2#define OK 1#...
  • DEC十进制转换为BIN二进制 BIN二进制 0 1 除2取余,倒序排列,高位补零 例如:14 14%2=0 14/2=7 7%2=1 7/2=3 3%2=1 3/2=1 1%2=1 1/2=0 倒序排序:则14=1110 #include<stdio.h> #include<math.h> #...
  • 尝试这个:new BigDecimal(...我们来看一个例子:我们想将123从十进制转换为基数3的数字.我们做什么?>取余数模3 – 将这个数字加到结果前面.>除以3.>如果数...
  • 52%等级:9已帮助:464人#include#include#include/*任意进制数转十进制数*//*char*value:其他进制数,以字符串形式存储*//*int*result:转换后的十进制数*//*intradix:待转换的进制*//*R进制数共n位,第n位表示Xn...
  • // 二进制十进制.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdio.h"int xn(int num,int n)//实现计算2的n次方的值{int outcome=1;int i=1;for (;i<=n;i++)...
  • 本文实例讲述了Python实现的十进制小数与二进制小数相互转换功能。分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用...
  • //将一个八位的二进制转换为十进制 #include<iostream> #include<cstdio> using namespace std; int convert(char *a){ int sum=0; int q=1; for(int i=7;i>=0;i--){ if(a[i]=='1'){ sum+=q; ...
  • 二进制转换十进制 算法解析

    千次阅读 2021-03-06 16:26:56
    java里面是有进制间互换现成的方法的:public class十进制与各进制的相互转换 {public static voidmain(String[] args){//java已经实现的机制:十进制转换为二进制int decimal = 10;System.out.println("十进制数:"+...
  • c语言二进制怎么转换十进制?按照如下步骤即可用C语言把二进制转换十进制数的程序:推荐:《C语言教程》1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。2、然后使用...
  • 对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来...将二进制、八进制、十六进制转换十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。...
  • 2.根据十进制转换二进制的思想:把这个数除以2若单数则1,偶数则0,直到最后一个数1为止。所以我们要做的就是用你给定的这个数除以2,如果结果奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。3.然后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 275,650
精华内容 110,260
关键字:

十进制111转换为二进制