精华内容
下载资源
问答
  • 计算机中的数值表示计算机以二进制表示数据,以表示电路中的正反。在二进制下,一个位只有0和1。逢二进一位。类似十进制下,一个位只有0~9。逢十进一位。101//5的二进制 11//3的二进制 计算机中存储数据,以字节为...

    计算机中的数值表示

    计算机以二进制表示数据,以表示电路中的正反。在二进制下,一个位只有0和1。逢二进一位。类似十进制下,一个位只有0~9。逢十进一位。

    101//5的二进制
     11//3的二进制
    

    计算机中存储数据,以字节为单位,一个字节有8个位,即可以表示-128~127范围的数字。上述的二进制的完整表示为:

    00000101//5的二进制
    00000011//3的二进制
    

    二进制的最高位0代表数值为非负数,1代表数值为负数,负数在下文提及,此处不赘述

    逻辑运算:与、或、非

    二进制有三种逻辑运算,也是为了便于二进制之间进行运算

    运算符号为&,运算规律是:真真为真,真假为假,假假为假

    1&1//1
    1&0//0
    0&0//0
    

    运算符号为|,运算规律是:真真为真,真假为真,假假为假

    1 | 1 //1
    1 | 0 //1
    0 | 0 //0
    

    运算符为~,取反的逻辑,运算规律:二进制位若为1,取反后为0。若为0,取反后为1

    ~1 //~00000001 =>11111110//代表-2 
    

    正数、负数的表示

    对于负数的表示,比较特殊,其有一条运算规律:对非负数的二进制进行取反、然后+1,便可得其负数的二进制表示,以3为例子:

       00000011//3的二进制
    //~00000011 对3进行取反,得到结果A
       11111100
    //对结果A进行+1
       11111101//-3在计算机中的最终表示,给计算机看的,不是给人看的,
    

    最终得出在一个字节下,11111101表示-3

    加减法运算过程

    计算机是用来计算的,那么必须支持最基本的加减法,这里以5和3的加减法为例:

    加法 5+3

    类似十进制的进位方式,二进制逢二进一

       00000101 //5的二进制
    +  00000011 //3的二进制
    =  00001000 //8的二进制
    
    减法 5-3

    对于5-3,可以看成 5+(-3),那么变相成加法运算了,然后按照加法的规则进行

       00000101//5的二进制
    +  11111101//-3的二进制
    = 100000010//258的二进制
    

    5+-3=258,看起来显然不正确,这里已经超过了一个字节的表示范围-128~127,溢出的部分会被忽略掉。

    1 00000010//超出的1部分,会被去掉,变成如下
      00000010//2
    

    利用溢出,就是可以实现减法的运算了:

       00000101//5的二进制
    +  11111101//-3的二进制
    =  00000010//2的二进制
    

    将32位的int,转成31个布尔值

    在java中,一个字节,也就是8位,而布尔值在java中至少占用一个字节(关于布尔值具体占几个字节,不在此处讨论),如果用户有7个属性,如是否为汉族、是否为男性等,如果全用布尔值来表示,就是7个字节。也可以用一个字节来表示,用0和1代表是和否。用1个字节替代7个字节来表示信息,空间节省80%以上,更别说是int等其他类型了:

    416129fa452438c96572439da4889d60.png

    需要解决如下几个问题:

    怎么读取某个位是0还是1?

    以第三位为例,即4的二进制00000100,利用与运算,可以值到某个位是否被置起来:

      00001001//9的二进制
    & 00000100//4的二进制
    = 00000000//0的二进制
    
     00001001 & 00000100 != 00000100 可判定第三位没有被置起
      00001101//13的二进制
    & 00000100//4的二进制
    = 00000100//4的二进制
     00001101 & 00000100 == 00000100 可判定第三位被置起了
    
    怎么在不影响其他位的情况下,把某个位设为1?

    这里会利用到或运算,我们还是以第三位为例子:

    //当第三位没有被置起时
      00001001//9的二进制
    | 00000100//4的二进制
    = 00001101//13的二进制
    //当第三位被置起时,设置前后,值应该是不变的
      00001101//13的二进制
    | 00000100//4的二进制
    = 00001101//13的二进制
    
    怎么在不影响其他位的情况下,把某个位设为0?

    这里会利用与、取反运算,我们仍以第三位为例子: 4的二进制00000100取反得到11111011

    //当第三位没有被置起时
      00001101//13的二进制
    & 11111011//4的二进制取反
    = 00001001
    

    综上所述,最后将上面过程实现为如下java:

    class BitUtil{
        public static boolean check(int flag, int bit){
            return (flag & bit) == bit;
        }
        public static int setBit(int flag, int bit, boolean value){
            if(value){
                return flag | bit;
            }else{
                return flag & (~bit);
            }
        }
    }
    展开全文
  • 展开全部1、八进制化为32313133353236313431303231363533e78988e69d8331333366306436十进制:例:将八进制数12转换成十进制数 2、八进制化为二进制:规则:按照顺序,每1位八进制数改写成等值的3位二进制数,次序...

    展开全部

    1、八进制化为32313133353236313431303231363533e78988e69d8331333366306436十进制:

    例:将八进制数12转换成十进制数      

    2、八进制化为二进制:

    规则:按照顺序,每1位八进制数改写成等值的3位二进制数,次序不变。

    例: (17.36)8 = (001 111 .011 110)2 = (1111.01111)2

    3、八进制化为十六进制

    先将八进制化为二进制,再将二进制化为十六进制。

    例:(712)8 = (1110 0101 0)2 = (1CA)16

    4、二进制化为八进制:

    整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。

    例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8

    5、十六进制化为八进制:

    先用1化4方法,将十六进制化为二进制;再用3并1方法,将二进制化为8制。

    例: (1CA)16 = (111001010)2 = (712)8

    说明:小数点前的高位零和小数点后的低位零可以去除。

    6、十进制化八进制:采用除8取余法。

    例:将十进制数115转化为八进制数

    8| 115…… 3

    8| 14 …… 6

    8| 1 …… 1

    结果:(115)10 = (163)8

    扩展资料:

    在计算机中的应用:

    八进制广泛应用于计算机系统,如PDP-8,ICL 1900和IBM大型机使用12位、24位或36位。八进制是这些基础,因为他们的最理想的二进制字缩写大小能被3整除(每个八进制数字代表三个二进制数字)。四、八到十二个数字可以简明地显示整个机器。

    它也降低成本使得数字允许通过数码管,七段显示器,和计算器用于操作员控制台,他们在二进制显示使用过于复杂,然而十进制显示需要复杂的硬件,十六进制显示需要显示更多的数字。然而,所有现代计算平台使用16 - 32位,或者64位,如果使用64位,将进一步划分为八位字节。

    这种系统三个八进制数字就能满足每字节需要,与最重要的八进制数字代表两个二进制数字(+ 1为下一个字节,如果有的话)。16位字的八进制表示需要6位数,但最重要的八进制数字代表(通过)只有一个(0或1)。这表示无法提供容易阅读的字节,因为它是在4位八进制数字。

    参考资料:

    展开全文
  • 生活中,人脑对很多事物都形成了条件反射,比如数字,习惯了十进制的我们可以很方便的对数字25、27进行大小比较和数值运算,却很难对二进制数字11001、11011有直观的感受。其实想要弄清楚这些进制很简单,十进制各位...

    生活中,人脑对很多事物都形成了条件反射,比如数字,习惯了十进制的我们可以很方便的对数字25、27进行大小比较和数值运算,却很难对二进制数字11001、11011有直观的感受。

    其实想要弄清楚这些进制很简单,十进制各位都很熟悉,那先从十进制入手。

    十进制计数规则是:基数为10。

    有10个数字,0、1、2、3、4、5、6、7、8、9。

    逢10进1,借1当10。

    那么,二进制计数规则就是:基数为2。

    有2个数字,即0和1。

    逢2进1,借1当2。

    十进制可以有多位组成,从右向左依次为个位、十位、百位、千位、万位...

    于此类似,那么二进制也可以由多位数组成,从右向左分别为1位、2位、4位、8位、16位...

    为什么称二进制的位数为1位、2位、4位...

    其实这是从十进制的角度看二进制各位数得出的名称。

    看上表,当二进制产生进位时,代表的十进制数为2、4、8、16、32、64、128...

    二进制虽然只有0和1两个数字,但是由于数字所处的位置不同,表示的数据也不同,例如:

    二进制数 “1011”

    这个二进制数共有4位,由3个1和1个0组成,比如数字1所处位置不同,所代表的大小也不同,其所处位置称作权。从右向左顺序各个位表示十进制的含义:

    第一个1表示:1的个数

    第二个1表示:2的个数

    第三个0表示:4的个数

    第四个1表示:8的个数

    (在此可以类比十进制1011,由1个1000,0个100,1个10,1个1组成。)

    所以,二进制数1011由1个8,0个4,1个2,1个1组成。按各位的权列出:

    按这种权展开式可以很方便将二进制转换为十进制。

    相应的,十进制转换成二进制整数就通常采用“除2取余,逆序排列”的方法。具体做法是用2整除十进制整数,可以得到一个商和余数,再用2去除商,又会得到一个商和余数,如此反复,直到商为0停止。再把先得到的余数作为二进制低位有效位,后得到的余数作为二进制高位有效位,依次排列。

    举个栗子:

    将十进制“11”转换为二进制。

    将十进制11转换为二进制数为1011。

    和十进制相比,二进制的运算规则也就简单多了。

    加法

    二进制运算只会有以下4种可能:

    (逢二进一)

    对于多位数二进制相加,考虑进位采用“逢2进1”的方式,例如十进制25(二进制11001)加上十进制27(二进制11011):

    减法

    也只有4种可能:

    (借一当二)

    乘法

    十进制可以按照九九乘法表运算,二进制乘法规则就简单多了,也有4种情况:

    二进制乘法也可以很简单转换为加法运算,例如十进制25(二进制11001)乘以十进制5(二进制101)。

    除法

    除法是乘法的逆运算,二进制乘法有4种,除法也是应该对应4种,考虑0作为除数是没有意义的。所以除法有以下两种:

    例如十进制25(二进制11001)除以十进制5(二进制101)。

    比较复杂的乘法和除法运算都能简单的转换为加、减和位移操作,所以一般计算机也只需要设计一个加法器即可。

    二进制弄清楚了,八进制也就很好懂了。

    其实很早,古人就明白了八进制的概念,比如八卦...

    八卦最初就是古人的记事符号,只是后来作为占卜工具被打上封建迷信的标志。

    其中隐含着二进制和八进制的概念。

    八卦的基本元素就是阴和阳,相当于二进制中的0和1。

    下图中用长实线代表“阳”,用中间断开的线代表“阴”,然后由3种这样的线条组成8种形状,相当于3位二进制数表示8种状态。

    当然,八进制计数不可能用八卦表示,通常采用0-7的阿拉伯数字表示

    八进制的计数规则:基数为8。

    由8个数字组成,分别是0、1、2、3、4、5、6、7。

    逢8进1,借1当8。

    十六进制,在古代中国当时使用的重量单位就是十六进制,16两为1斤,就有了所谓的“半斤八两”。

    同样十六进制的计数规则为:基数为16。

    由16个数字符号组成,分别是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

    逢16进1,借1当16。

    各种进制的转换

    前面二进制和十进制相互转换的方法,同样适用于其他进制的数转换为十进制。

    “按权展开”—其他进制转换为十进制(B表示各进制的基数,n表示位数):

    例如十六进制数BC0D转换为十进制:

    “除基数B取余,逆序排列”方法可以将十进制数转换为任意进制数。

    二进制和八进制、十六进制数的转换可以采用更简单的方法。

    二进制转换为八进制,采用“3位并1位”,按从右向左方向,每3位二进制位一组,最高位不足3位,添0补足3位,然后将各组3位二进制数加权展开,得到八进制数。

    将八进制转换为二进制采用相反的操作“1位拆3位”。

    类似的,十六进制和二进制转换为“4位并1位”,“1位拆4位”的方法,在此就不再啰嗦了。

    如果大家不是很想自己手算进制的话,这里推荐一款微信小程序“小算包”(当初闲时写的)也可以协助计算。

    展开全文
  • 题目要求求两个二进制数的加法算法思路:1、要定义几个参数,carry代表进位,opa代表数组a的元素转换成数字,opb代表数组b的元素转换成数字。sum代表数组的和2、判断两个字符串是否长度相同,如果不同的要从左补齐...

    坚持坚持! 题目要求求两个二进制数的加法

    算法思路:1、要定义几个参数,carry代表进位,opa代表数组a的元素转换成数字,opb代表数组b的元素转换成数字。sum代表数组的和

    2、判断两个字符串是否长度相同,如果不同的要从左补齐。

    3、两个字符串对齐之后,进行一个for循环,循环从字符串最后一位到第一位,分别对应相加,如果加和等于2的话就该位变为0,进位标志位carry为1,如果加和为1,进位为0

    4、利用Java中StringBuilder的字符串具有可变长度的性质,利用append方法将sum连接起来。

    5、最后如果carry为1的话则字符串继续append("1")

    6、最后一步,利用reverse方法将字符串反转。

    Java代码如下:

    public class Solution {     public String addBinary(String a, String b) {     int carry=0;     int sum=0;     int opa=0;     int opb=0;     StringBuilder result=new  StringBuilder();     while(a.length()!=b.length()){         if(a.length()>b.length()){             b="0"+b;         }else{             a="0"+a;         }     }     for(int i=a.length()-1;i>=0;i--){         opa=a.charAt(i)-'0';         opb=b.charAt(i)-'0';         sum=opa+opb+carry;         if(sum>=2){             result.append((char) (sum-2 +'0'));             carry=1;         }else{             result.append((char) (sum +'0'));             carry=0;         }             }      if(carry==1){             result.append("1");         }     return result.reverse().toString();     } }

    展开全文
  • 1111(二进制)=8+4+2+1=8+7=15,加上零可以表示16个数字 11111 (二进制) =16+15=31,加上零可以表示32个数字 1111 1111 (二进制) =128+64+32+16+8+4+2+1=128+127=255,加0表示256个数字 若第一位表示正负数符号...
  • 展开全部除法就是移位相减例:62616964757a686964616fe59b9ee7ad943133336565373999用2进制是 11000115是101先1100011 - 1010000 = 10011(其中二进制1010000 = 5乘2的4次幂)再10011 - 1010 = 1001 ( 其中二进制1010 ...
  • 我们将二进制的首位为0解释为正数,1解释为负数 补码.jpg 13 00001101 -13 11110011(补码) --------------- 1 00000000 直接从以上等式来看,13和-13之间除了符号位不一样,其实位之间并无关系。而实际上他们之间的...
  • 对于二进制原码10010求反码: ((10010)原)反=对正数(00010)原含符号位取反=反码11101(10010,1为符号码,故为负) (11101)二进制=-2十进制 对于八进制: 例如,Linux平台将默认目录权限设置为755(rwxrxrxrx-x),...
  • 二进制的乘除

    千次阅读 2019-04-17 09:16:04
    已经好久没有写博客了,一是因为学院屁事太多了(嘘,吐吐槽就行了,被...在加上老师告诉我们计算机只能进行二进制的加法,所以我就在思考二进制怎么算加减乘除。好了我还是先说明吧。 * 一:乘法 *大家还记得小...
  • 30因为6是int类型的,4byte,32bit,二进制表达为0x00000006无符号右移-2相当于右移(32+(-2))==30如果这里是16进制的数,比如0xFFFFFFFFFFFFFFFFL(-1的二进制补码形式,补码不懂的自行百度)那么右移-2就应该等于右移...
  • 二进制

    2019-09-24 22:54:23
    有人说,好奇怪,十进制,我们是个手指数的过来,挺好的,为什么...因为二进制好实现,比如说机器要计算1+5,那么,1+5怎么算呢?怎么表示一个5呢?这就很麻烦,但是,如果是机器只算1+0或者1+1的话,这就很容易,1...
  • 【判断题】操作系统、语言处理系统属于系统软件。【判断题】计算机外部设备的驱动程序都是 BIOS ...【填空题】二进制信息最基本的逻辑运算有三种,即逻辑加、取反以及( )。【单选题】下列选项中,( )不是计算机中采用...
  • 二进制除法怎么算(共2篇)二进制的运算法则1 2 微型计算机运算基础1 2 1 二进制数的运算方法电子计算机具有强大的运算能力,它可以进行两种运算:算术运算和逻辑运算。1.二进制数的算术运算二进制数的算术运算包括:...
  • 另外我爷爷还说过,这二进制数字,对应到卦象,不但可以为人卜卦,厉害一些相师,还能用把自己的气打入这些数字中,然后让阅读者看了,进而根据这些二进制排序行事。 从而达到远程指挥一个人目的,这也是第三种中邪...
  • 二进制转八进制.txt

    2020-07-19 10:30:27
    本文件为C++二进制转化八进制源代码,仅供各位了解学习进制之间的转换关系,让各位有个思路,我们都知道二进制转换成八进制是3个数合为一个来计算的,那么如果用户输入的只有两位数呢?这种情况该怎么算?最后一步...
  • 运算进制有很多,用十进制 1÷3 是除不尽的 那如果运算是进制的,1÷3=? 是不是会有不一样的结果呢
  • 展开全部1010二进制和十进制的进位制度是相同的,只不32313133353236313431303231363533e58685e5aeb931333365666239过把逢十进一变成了逢二进一,比方说运算10的转换,我们可以先考虑10是2的几次方,结果就是2^3=8和...
  • 最近看HashMap源码,遇到了这样一段代码:1 static final int hash(Object key) {2 int h;3 return (key == null) ? 0 : (h = key.hashCode()) ^ (h >...十进制转二进制原理:给定的数循环除以...
  • python如何进行进制转换1、十进制转二进制(bin)首先我们看看怎么把一个十进制转化成二进制,我们可以使用python的内置方法 bindec=10print bin(dec)输出0b1010python 中二进制以ob开头推荐:《python视频教程》2、十...
  • 十进制: 我们平时使用的就是十进制,逢十进一;例:1-9,下一位为10;...怎么算这些进制呢(以二进制为例) 这种方式为取余,采用这种方式,可同样得出八进制,十六进制的数据,因为十六进制比较特殊,这里再加一个
  • 二进制与2 & 30B10 & 0B11 => 0B10 => 22、|二进制或2 | 30B10 & 0B11 => 0B11 => 33、~二进制非~3= ~ 0B00000000 00000000 00000000 00000011= 0B11111111 11111111 11111111 11111100取反...
  • 今天闲逛,发现有人问:子网掩码为255.255.255.224 IP地址为192.168.1.10换算成二进制怎么算?结果是多少?由于兴趣使然,便一探究竟;子网掩码:255.255.255.224= 27 转换为二进制为11111111.11111111.11111111....
  • 二进制运算

    2021-01-05 09:57:34
    二进制有原码 反码 和补码 计算机中在运算时使用的都是补码 btye 类型 (-128)- (127) btye类型在java中站一个字节 一个字节=8位(bit) 计算机只能存储0和1 1111 1111 当全部存满时出来是255 如果只是这样的话...
  • 二进制求和

    2020-02-04 15:26:02
    因为人怎么算,程序就怎么算的。额听起来很牛逼,其实就是强行算哈哈! 原题出处: 二进制求和 思路: 先不管两个字符串的长短,让他们能相加的部分先进行计算,用一个变量 x 记录进位的值。当将短的字符串计算完毕...
  • 这里详细的整理一下二进制,八进制,十进制,十六进制之间的相互转换问题,由于篇幅较长,因此分开来写,后续部分后几天陆续上传,可以关注我。...出每一位上二进制数字所表示的十进制数 将这些十进制数加起来
  • 二进制的规律

    2019-10-27 18:56:34
    电脑是一个很神奇的东西。...在昨晚从一写到五百一十二然后每个数都转换为二进制,一开始在写的时候觉得真是太难了,那么多数怎么写呀?但是写了写却发现二进制的排列是有顺序的。可以在数与数之间...
  • 二进制和十进制互转换为什么要讲这么基础而又不常用的内容呢?原因呢,是小编在实验一个 php 的后门程序的时候,怎么都不能反弹成功。作为一个专业的 phper,别的后门调不通也就算了,php 不通怎么能这么了,于是...
  • 你不觉得这种方法非常不好么咱玩转的同学,从来不用这种方法因为,我们有捷径——十进制转换为二进制捷径在哪里?就是《玩转Office轻松过二级》第3版,书中介绍的方法!以下节选自本书正文:1.2.2.1 十进制数转换...
  • 我初中的时候就没搞清楚手动怎么算二进制 写这个代码的时候研究了好久百度 https://jingyan.baidu.com/article/597a0643614568312b5243c0.html 写得很详细 总算是搞懂了^^ void ten_to_two( int n ) { ...
  • 你不觉得这种方法非常不好么咱玩转的同学,从来不用这种方法因为,我们有捷径——十进制转换为二进制捷径在哪里?就是《玩转Office轻松过二级》第3版,书中介绍的方法!以下节选自本书正文:1.2.2.1 十进制数转换...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 309
精华内容 123
关键字:

二进制怎么算