精华内容
下载资源
问答
  • 二进制数有哪些
    千次阅读
    2021-07-24 01:40:48

    计算机采用二进制数的好处有哪些?

    來源:互聯網  2010-03-07 02:06:08  評論

    分類: 電腦/網絡

    參考答案:

    一、可行性:若使用十进制数,则需要这样的电子器件,它必须有能表示0—9数码的10个物理状态,这在技术上是相当困难的(目前为止没有完全解决),而使用二进制数,只需0,1两个状态,技术上轻而易举,如开关的通与断,晶体管中导通与截止等,磁介质的带磁与不带磁。

    二、可靠性:二进制只有两种状态,数字传输处理不易出错。

    三、简易性:二进制运算法则比较简单,如:

    求和法则(3个) :0+0=0 , 0+1=1+0=1, 1+1=10

    求积法则(3个) :0×0=0,0×1=1×0=0, 1×1=1

    这就使计算机运算器的结构大大简化,控制也简单,较容易实现

    四、逻辑性:可用进制的0,1直接代表逻辑代数中的“假”和“真”

    [b]分类:[/b] 电脑/网络[br][b]参考答案:[/b][br]一、可行性:若使用十进制数,则需要这样的电子器件,它必须有能表示0—9数码的10个物理状态,这在技术上是相当困难的(目前为止没有完全解决),而使用二进制数,只需0,1两个状态,技术上轻而易举,如开关的通与断,晶体管中导通与截止等,磁介质的带磁与不带磁。

    二、可靠性:二进制只有两种状态,数字传输处理不易出错。

    三、简易性:二进制运算法则比较简单,如:

    求和法则(3个) :0+0=0 , 0+1=1+0=1, 1+1=10

    求积法则(3个) :0×0=0,0×1=1×0=0, 1×1=1

    这就使计算机运算器的结构大大简化,控制也简单,较容易实现

    四、逻辑性:可用进制的0,1直接代表逻辑代数中的“假”和“真”

    来自[url=http://www.taschool.com/bbs/dispbbs.asp?BoardID=19&ID=4104]http://www.taschool.com/bbs/dispbbs.asp?BoardID=19&ID=4104[/url]

    更多相关内容
  • 1、整数转二进制数 //将一个int型整数转换为二进制数 string itob(int number) { string binNum; while (number) { binNum += '0' + number%2; number /= 2; } reverse(binNum.begin(), binNum.end()); ...

    1、整数转二进制数

    //将一个int型整数转换为二进制数
    string itob(int number)
    {
    	string binNum;
    	while (number)
    	{
    		binNum += '0' + number%2;
    		number /= 2;
    	}
    	reverse(binNum.begin(), binNum.end());
    	return binNum;
    }

    如果需要二进制数高位补零,或者是正负数转换的二进制数有符号位,则可以对以上代码稍作处理。

    2、二进制数转整数

    //方法一:将一个二进制数转换为int型整数(不考虑有符号位的情况)
    int btoi(string binNum)
    {
    	int ret = 0;
    	for (auto x : binNum)
    		ret = ret * 2 + (x - '0');
    	return ret;
    }

    当然你也可以从二进制的低位开始算起(就像教科书里将一个二进制数化为整数那样),如下

    //方法二:将一个二进制数转换为int型整数(不考虑有符号位的情况)
    int btoi(string binNum)
    {
    	int ret = 0;
    	for (int i = binNum.size() - 1; i >= 0; i--)
    		ret += (binNum[i] - '0') * pow(2, binNum.size() - i - 1);
    	return ret;
    }

    两种方法都可以实现目的,但是在对二进制求模的时候会稍有区别,继续往下面看。

    3、二进制求模

    现在有个问题:有两个二进制字符串binStr1、binStr2,要求你用binStr1对binStr2求模,结果还是用二进制字符串形式返回,你会怎么做?

    当然,最容易想到的也最简单的方式,就是利用我们上面写的btoi和itob函数,现将这两个二进制字符串转换为整数,然后整数用%求余,结果再用itob函数转换为二进制字符串返回,完美!

    那你真的是很聪明了!我现在加大难度,假如说binStr1这个二进制串非常非常长,表示的整数远远超过了int甚至是long long类型所能表示的范围;也就是说这个整数计算机它存储不了!(当然binStr2表示的范围没有那么变态,因为对binStr2求模的结果可能需要用计算机表示出来)。那这个时候我还让你求出这个模的结果(求模的结果用二进制串或者整数类型表示都可以),你会怎么办?

    我们先来看一下二进制求模的时候是什么样子的吧。假如我们需要求10011110(158) 对1010(10)的模:

    余数1000(8)即所求的结果。

    其实我们演示的这个二进制除法过程跟十进制除法是一样的。当然我们受此启发,如果按照这个过程对binStr1和binStr2进行处理,求他们模的结果,应该说也不是不可以,只是这样会特别麻烦。

    如果我们对这个过程继续深入探究的话,我们将会发现一些端倪!!

    看除法的过程是怎么做的??对于被除数二进制串,不停的往后走,直到找到一个大于等于除数二进制串的数,第一次找到的是10011,对除数1010作除法得到余数1001,然后拿到被除数的下一位组成10011,继续对除数1010作除法,得到余数1001,然后继续往下面进行..........

    如果我们不用处理二进制字符串的方法进行求余数,而是在这个过程中用整数求余的方式进行,不是也完美避免了因为二进制数过大而导致的计算机不能表示带来的死结嘛?

    直接上代码,给出一个直观的理解:求一个二进制串表示的大整数对另一个整数求模的结果,结果用十进制整数返回

    /**
      function:求一个二进制串表示的大整数对另一个整数求模的结果,结果用十进制整数返回
      假设:二进制串表示的大整数是bigBinNum,对mod求模。
      **/
    #define MOD mod
    int binaryMod(string bigBinNum)
    {
    	int ret = 0;
    	for (auto x : bigBinNum)
    		ret = (ret * 2 + x - '0') % MOD;
    	return ret;
    }

    这里的代码流程跟上面二进制转整数方法一里面的方法是一样的,只是稍稍多加了一个求模的功能。

    在刷LeetCode的时候遇到这个小问题(求一个二进制串表示的大整数对另一个整数求模的结果,结果用十进制整数返回),在此稍作总结,以便以后可以随时复习查看。

     

    展开全文
  • 二进制数与十进制数的转换 聊二进制数的运算前,我们先看看二进制数的值与十进制数的值是如何相互转换的, 十进制转换成二进制 将十进制数除以2,得到的商再除以2,依次类推直到商为1时为止,然后在旁边标出各步的...

    二进制数与十进制数的转换

    聊二进制数的运算前,我们先看看二进制数的值与十进制数的值是如何相互转换的,
    十进制转换成二进制
    将十进制数除以2,得到的商再除以2,依次类推直到商为1时为止,然后在旁边标出各步的余数,最后从下往上倒着写出来,高位补零就可以成功转换成二进制。
    例如下图49的二进制数就是110001
    在这里插入图片描述
    二进制转换成十进制
    只需将二进制数的各数位的值和位权相乘,然后将相乘的结果相加即可,有木有感觉特别方便。
    在这里插入图片描述
    二进制数的符号位
    二进制数中表示负数值时,一般会把最高位作为符号位来使用,最高位为0代表正数,最高位为1代表负数。
    这时了解二进制的人可能就会疑问,既然最高位1代表负数,1是00000001,那-1应该是10000001,为什么是11111111呢?要解释这个我们要先引入“补数”的概念,因为计算机在做加减运算时其实内部只会做加法运算,所以为了表示负数,就用正数来表示负数,这就是负数的概念。得到补数的方法很简单,进行取反操作,将二进制数的各位数的数值由1变为0,0变为1,再将结果加上1就可以了。

    00000001——————1(十进制)
    先进行取反操作,之后再加上1
    11111110
    变成
    11111111——————-1(十进制)

    不信的同学还可以验证以下,就会发现8位二进制的-1+1刚好等于100000000,而计算机会直接忽略掉最高位溢出的那个数字,所以刚好是00000000了。

    二进制数的乘除运算

    二进制数的乘除运算有两种方法,要么先转化位十进制数进行运算之后再转换为二进制(想来有点麻烦),要么头铁直接用二进制数进行乘除运算。

    在这里插入图片描述
    二进制数111乘以1011,乘数1011的每一位分别与乘数相乘,得到111、1110、00000、111000,将其加起来,得到1001101,这便是二进制乘法最直接的解求过程;也可以将111转化为十进制数7,1011转化为十进制数11,显版然7乘以11等于77,再将十进制数77化为二进制数1001101,显然1x26+1x23+1x22+1x20=64+8+4+1=77,所求结果完全正确。——百度

    二进制数的移位运算

    移位运算可是二进制的门面招牌
    在这里插入图片描述

    移位运算指的是将二进制数值的各数位进行左右移位(shift=移位)的运算。移位有左移(向高位方向)和右移(向低位方向)两种。在一次运算中,可以进行多个数位的移位操作。在程序代码中<<这个运算符表示左移,>>这个运算符表示右移,

    int a=1;
    int b;
    b=a<<3;//b现在为8

    运算符左侧是被移位的值,右侧表示要移位的位数。看到这有些同学就会想到,这移了几位不多了几个空白处么,计算机这千年老怪早想好了,如果是左移运算的话,它就会在空出来的低位补0。如果是右移运算的话,就稍微有点特殊,因为存在两种情况,既可以填1也可以填0,这就是逻辑右移和算数右移的区别。

    当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0.类似于霓虹灯往右滚动的效果。这就称为逻辑右移。
    将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1)。这就称为算数右移。例如负数就在最高位补1,正数就在最高位补0。
    在这里插入图片描述

    展开全文
  • 例如,二进制数1101可表示为: 1 x 2^3 + 1 x 2^2 + 0 x 2^1 + 1 x 2^0 以十进制数表示为: 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 13 用二进制系统可以把任意整数(如果足够的位)表示为0和1的组合。由于数字计算机通过...

    通常都是基于数字10来书写数字。例如2157的千位是2,百位是1,十位是5,个位是7,可以写成:

    2 x 1000 + 1 x 100 + 5 x 10 + 7 x 1

    注意,1000是10的立方(即3次幂),100是10的平方(即2次幂),10是10的1次幂,而且10(以及任意正数)的0次幂是1。因此,2157也可以写成:

    2 x 10^3 + 1 x 10^2 + 5 x 10^1 + 7 x 10^0

    因为这种书写数字的方法是基于10的幂,所以称以10为基底书写2157。姑且认为十进制系统得以发展是得益于我们都有10根手指。从某种意义上看,计算机的位只有2根手指,因为它只能被设置为0或1,关闭或打开。因此,计算机适用基底为2的数制系统。它用2的幂而不是10的幂。以2为基底表示的数字被称为二进制数(binarynumber)。二进制中的2和十进制中的10作用相同。例如,二进制数1101可表示为:

    1 x 2^3 + 1 x 2^2 + 0 x 2^1 + 1 x 2^0

    以十进制数表示为:

    1 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 13

    用二进制系统可以把任意整数(如果有足够的位)表示为0和1的组合。由于数字计算机通过关闭和打开状态的组合来表示信息,这两种状态分别用0和1来表示,所以使用这套数制系统非常方便。接下来,我们来学习二进制系统如何表示1字节的整数。

    1 二进制整数

    通常,1字节包含8位。C语言用字节(byte)表示存储系统字符集所需的大小,所以C字节可能是8位、9位、16位或其他值。不过,描述存储器芯片和数据传输率中所用的字节指的是8位字节。为了简化起见,本章假设1字节 是8位(计算机界通常用八位组(octet)这个术语特指8位字节)。可以从左往右给这8位分别编号为7~0。在1字节中,编号是7的位被称为高阶位(high-order-bit),编号是0的位被称为低阶位(low-orderbit)。每1位的编号对应2的相应指数。因此,可以根据图15.1所示的例子理解字节。

    a15cd188adf90bb60c41ac79024ddc48.png

    这里,128是2的7次幂,以此类推。该字节能表示的最大数字是把所有位都设置为1:11111111。这个二进制数的值是:

    128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255

    而该字节最小的二进制数是00000000,其值为0。因此,1字节可存储0~255范围内的数字,总共256个值。或者,通过不同的方式解释位组合(bit pattern),程序可以用1字节存储-128~+127范围内的整数,总共还是256个值。例如,通常unsigned char用1字节表示的范围是0~255,而signed char用1字节表示的范围是-128~+27。

    2 有符号整数

    如何表示有符号整数取决于硬件,而不是C语言。也许表示有符号数最简单的方式是用1位(如,高阶位)存储符号,只剩下7位表示数字本身(假设存储在1字节中)。用这种符号量(sign-magnitude)表示法,10000001表示−1,00000001表示1。因此,其表示范围是−127~+127。 这种方法的缺点是有两个0:+0和-0。这很容易混淆,而且用两个位组合来表示一个值也有些浪费。 二进制补码(two’s-complement)方法避免了这个问题,是当今最常用的系统。我们将以1字节为例,讨论这种方法。二进制补码用1字节中的后7位表示0~127,高阶位设置为0。目前,这种方法和符号量的方法相同。另外,如果高阶位是1,表示的值为负。这两种方法的区别在于如何确定负值。从一个9位组合100000000(256的二进制形式)减去一个负数的位组合,结果是该负值的量。例如,假设一个负值的位组合是10000000,作为一个无符号字节,该组合为表示128;作为一个有符号值,该组合表示负值(编码是7的位为1),而且值为100000000-10000000,即10000000(128)。因此,该数是-128(在符号量表示法中,该位组合表示−0)。类似地,10000001是−127,11111111是−1。该方法可以表示−128~+127范围内的数。 要得到一个二进制补码数的相反数,最简单的方法是反转每一位(即0变为1,1变为0),然后加1。因为1是00000001,那么−1则是11111110+1,或11111111。这与上面的介绍一致。 二进制反码(one’s-complement)方法通过反转位组合中的每一位形成一个负数。例如,00000001是1,那么11111110是−1。这种方法也有一个−0:11111111。该方法能表示-127~+127之间的数。

    3 二进制浮点数

    浮点数分两部分存储:二进制小数和二进制指数。下面我们将详细介绍。

    1.二进制小数

    一个普通的浮点数0.527,表示如下:

    5/10 + 2/100 + 7/1000

    从左往右,各分母都是10的递增次幂。在二进制小数中,使用2的幂作为分母,所以二进制小数.101表示为:

    1/2 + 0/4 + 1/8

    用十进制表示法为:

    0.50 + 0.00 + 0.125

    即是 0.625.

    许多分数(如,1/3)不能用十进制表示法精确地表示。与此类似,许多分数也不能用二进制表示法准确地表示。实际上,二进制表示法只能精确地表示多个1/2的幂的和。因此,3/4和7/8可以精确地表示为二进制小数,但是1/3和2/5却不能。

    浮点数表示法

    为了在计算机中表示一个浮点数,要留出若干位(因系统而异)存储二进制分数,其他位存储指数。一般而言,数字的实际值是由二进制小数乘以2的指定次幂组成。例如,一个浮点数乘以4,那么二进制小数不变,其指数乘以2,二进制分数不变。如果一份浮点数乘以一个不是2的幂的数,会改变二进制小数部分,如有必要,也会改变指数部分。

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

    千次阅读 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]=='....
  • 想要了解二进制数是如何表示计算机信息的?先要追本溯源, 二进制(binary)在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)...
  • C语言printf如何输出二进制数格式?如何将十进制数按二进制数输出?C语言printf二进制输出字符的格式是什么?C语言可以二进制输出吗?C语言printf打印没有提供二进制格式化输出转换说明,需要自定义实现输出二进制数...
  • 十进制数转化为二进制数的两种方法

    万次阅读 多人点赞 2020-12-29 21:14:52
    如果我们要把十进制的150转化为二进制数,可以使用下面两种方法: 第一种方法:表格法 这种方法的核心思想就是用二进制的各位来“拼凑”出我们的十进制数。 我们先把二进制各位的位权列在表格里面。(我们如何...
  • C++实现读入二进制数并转换为十进制输出题目描述已知一个只包含0和1的二进制数,长度不大于10,将其转换为十进制并输出。输入描述输入一个二进制整数n,其长度不大于10输出描述输出转换后的十进制数,占一行样例输入...
  • 二进制数及其运算

    千次阅读 2020-07-28 08:14:13
    什么是二进制数呢?如何使用二进制进行加减乘除?二进制数如何表示负数呢?本文将为你揭晓。 为什么用二进制表示 计算机内部是由IC电子元件组成的,其中CPU和内存也是IC电子元件的一种,CPU和内存使用IC电子元件作为...
  • 判断一个数的二进制数有多少位1

    千次阅读 2020-04-01 15:20:38
    将该数跟2取余,再除于2,反复操作,所有的余数加起来就是目标二进制数。那么统计其中位是1的位只需要在模2的时候记录累加。在将原来的数除以2.代码如下: #include <iostream> using na...
  • 二进制数、八进制数和十六进制数的表示一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊...
  • C语言十进制数转换为二进制数

    千次阅读 2021-05-19 19:45:36
    这是一个C语言 do while 循环示例:统计十进制正整数 n 转换为二进制数后,其二进制序列中包含的 1 和 0 的个数。问题分析输入:一个正整数。输出:两个整数:1 的个数和 0 的个数。将十进制数 n 转换成二进制数,...
  • 展开全部1101.1转换32313133353236313431303231363533e78988e69d8331333365633938为10进制为13.5进制转换是人们利用符号来计数的方法...位权是指,进位制中每一固定位置对应的单位二进制数转换为十进制数二进制数第...
  • 详解计算机内部存储数据的形式—二进制数 前言 要想对程序的运行机制形成一个大致印象,就要了解信息(数据)在计算机内部是以怎样的形式来表现的,又是以怎样的方法进行运算的。在 C 和 Java 等高级语言编写的 程序...
  • 一、二进制数、位和字节 1、二进制数 以为基地表示的数字称为二进制数。二进制中的2和十进制中的10作用相同。二进制数1101可表示为: 1*23+1*22+0*21+1*20 以十进制数表示 1*8+1*4+0*2+1*1 = 13 二进制系统可以把...
  • 二进制表示法在计算机科学中很重要,计算机中存储的所有...十进制的数字如何转换成二进制的,举几个例子就明白了:图片来自https://www.geeksforgeeks.org/program-decimal-binary-conversion/将17作为被除,除以2...
  • C# 二进制数表示

    千次阅读 2022-02-15 17:00:15
    C# 二进制数表示
  • 二进制数的运算

    千次阅读 2020-06-01 23:08:44
    有关二进制的算术运算、逻辑运算
  • 8位二进制数范围

    万次阅读 2020-04-15 21:22:59
    文章目录8位二进制数的范围原码、反码、补码区别计算机以补码形式存储 8位二进制数的范围 原码、反码、补码区别 原码:用符号位和数值标识带符号数,第一位表示符号位,正数的符号位用0,负数的符号位用1,数值部分...
  • C++二进制数转十进制

    千次阅读 2022-04-10 00:31:59
    cout请输入一个二进制数:"; cin>>a; h=a; while(a!=0) { b++; a=a/10; } for(int i=0;i { c=(h-c)%d; j=c*10/d; d=d*10; e=pow(2,i); f=j*e; g=g+f; } cout这个二进制数的十进制数为:" return 0; } 
  • 十进制数75转换成二进制数是多少?

    千次阅读 2021-07-27 09:10:24
    75转换成二进制是:1001011。75/2=37......137/2=18......118/2=9.........09/2=4...........14/2=2...........02/2=1...........0从下往上读余数,就是整数部分的案1001011。拓展资料:十进制整数转换为二进制整数...
  • 这些只是表示方法不同,但是它们表示的含义是一样的,如二进制中的 11 和十进制数中的 3 是一样的。 Python 二进制表示法 如十进制中的 100 用二进制表示就是 1100100,那么 100 就可以用 0b1100100 来表示。 a...
  • 二进制转换为十六进制数是Prerequisite: Number systems 先决条件: 数字系统 Converting binary numbers into hexadecimal numbers is similar to the conversion of binary into octal, it just requires some ...
  • 十进制数转换为二进制数 C++

    千次阅读 2021-04-12 21:57:07
    这篇文章和大家分享一下我个人对十进制数转换为二进制数的想法,目前暂时更新只整数十进制的转换,后续会更新带小数的进制转换。(代码使用c++实现) 一、十进制转换为二进制的数学算法 设目标十进制数为n,用短除...
  • C++ 将十进制数转换为二进制数方法

    千次阅读 2022-05-08 13:57:23
    C++ 将十进制数转换为二进制数方法
  • C语言算法之将十进制数转换成二进制数

    万次阅读 多人点赞 2018-06-20 14:35:29
    导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数...
  • 本文实现的是将十二位的符号的二进制数转换为十进制数: 由于在数字在显示中,如果高位为0会在显示中被省去,所以,这里无法检测到每个数的位数都为12位,也就是无法全部检测到12位的符号位。 比如: 000011110000...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,196,515
精华内容 478,606
关键字:

二进制数有哪些