精华内容
下载资源
问答
  • 二进制加减法运算法则
    万次阅读 多人点赞
    2020-02-12 14:24:09

    一、二进制加法(逢2进1)
    举例:100111+11010=100001
    1 0 0 1 1 1
    1 1 0 1 0
    ——————
    1 0 0 0 0 0 1
    十进制加法是逢十进一,二进制加法是逢二进一。
    最低位:1加0得1。
    倒数第2位:1加1得2,同时进1。
    倒数第3位:1加0得1,再加上进位的1,结果为2。
    其他位同理。

    二、二进制减法(借1当2)
    举例:1000001-11010=100111
    1 0 0 0 0 0 1
    1 1 0 1 0
    ———————
    0 1 0 0 1 1 1
    最低位:1减0得1。
    倒数第2位:借1得2,再减去1,结果为1。
    倒数第3位:0借1得2,被借1为1,1减0为1。
    倒数第4位:0借1得2,被借1为1,1减1为0。
    倒数第5位:0借1得2,被借1为1,1减1为0。
    倒数第6位:0借1得2,被借1为1,结果为1。
    最高位:1被借1得0。

    再举一个例子,计算二进制小数的:10-0.1001=1.0111。方法与整数一样。

    更多相关内容
  • 二进制加运算

    千次阅读 2021-09-11 23:41:24
    二进制加法原则是:2个1相加等于2就要向前给1,下面得算为0,相当于十进制1+9=10向前给1,下面得算为0,因为二进制只有0和1 ,所以11等于2多了一个1就要往前送。 二进制减法原则是:0减1不够,就向前借2减1 1...
    • 二进制加法原则是:2个1相加等于2就要向前给1,下面得算为0,相当于十进制1+9=10向前给1,下面得算为0,因为二进制只有0和1 ,所以1加1等于2多了一个1就要往前送。

    • 二进制减法原则是:0减1不够,就向前借2减1

    1、加法实例
    1100 1100 + 0000 1100

    1100 1100
    +0000 1100

    ——————
    1101 1000

    首先右边两个0相加为0,右3位1+1=2就要给前面1个1,下面得数为0,右4位因为前面给了一个1,所以现在就是1+1+1=3,把2向前给1,然后3-2=1还有一个1,所以下面得数为1,右5位因为前面给了一个1,所以1+0+0=0,右六位因为前面没有给1,所以0+0=0,右七位1+0=1,右八位1+0=1,所以是1101 1000。

    2、减法实例

    1100 1100
    _00001111
    一一一一一一
    1011 1101

    因为右一位0-1不够减,向前面0借2,所以2-1=1,得数为1,右二位因为被后面借了一个2被减掉了一个1,所以现在是-1,-1-0不够,又要向前面1借2,所以-1+2-0=1,得数为1,右三位因为被后面借了一个2减掉了1,1-1=0,所以现在0-1不够了,又要向前借2,所以2-1=1,得数为1,右5位因为被后面借了2,减掉了1,0-1=-1,-1减0不够,继续向前借2,2-1=1,1-0=1,得算为1,右六同右五位,右七因为被后面借了2,减了1等于0,所以0-0=0,得数为0,右八位1-0=1,所以得1011 1101

    展开全文
  • 二进制加减法,23个位运算技巧

    千次阅读 2019-04-06 20:36:22
    二进制加减法 二进制最高位为1时表示负数,为0时表示正数。 **原码:**一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。 举例说明:  int类型的 3 的...

    在这里插入图片描述

    二进制加,减法

    二进制最高位为1时表示负数,为0时表示正数。
    **原码:**一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。
    举例说明:
          int类型的 3 的原码是 11B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得:
          00000000 00000000 00000000 00000011
          int类型的 -3 的绝对值的二进制位就是上面的 11B 展开后高位补零就得:
          10000000 00000000 00000000 00000011
    **反码:**正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反。
    举例说明:
          int类型的 3 的反码是
          00000000 00000000 00000000 00000011
          和原码一样没什么可说的
          int类型的 -3 的反码是
          11111111 11111111 11111111 11111100
          除开符号位 所有位 取反
    **补码:**正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1.
    还是举例说明:
          int类型的 3 的补码是:
          00000000 00000000 00000000 00000011
          int类型的 -3 的补码是
          11111111 11111111 1111111 11111101
          就是其反码加1

    最后总结一下:
        正数的反码和补码都与原码相同。
        负数的反码为对该数的原码除符号位外各位取反。
        负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1。

    二进制运算法则:

    二进制的运算算术运算
    二进制的加法:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位进位);即7=111
    10=1010 3=11
    二进制的减法:0-0=0,0-1=1(向高位借位) 1-0=1,1-1=0 (模二加运算或异或运算) ;
    二进制的乘法:0 * 0 = 0 0 * 1 = 0,1 * 0 = 0,1 * 1 = 1
    二进制的除法:0÷0 = 0,0÷1 = 0,1÷0 = 0 (无意义),1÷1 = 1 ;
    逻辑运算二进制的或运算:遇1得1 二进制的与运算:遇0得0 二进制的非运算:各位取反。 在这里插入图片描述

    例如101001-011010=001111(41-26=15)的运算。灰色部分为计算过程,绿色字为被减一得到的数,红色字为借一后得到的数。
    在运算过程中,从右往左逐位进行计算。
    1-0=1;
    0不够减1,向前借一后加2变成2;2-1=1;
    0在上一步被借一所以减为-1,-1不够减0,向前借一后加2变成1;1-0=1;
    1在上一步被借一所以减为0,0不够减1,向前借一后加2变成2;2-1=1;
    0在上一步被借一所以减为-1,-1不够减1,向前借一后加2变成1;1-1=0;
    1在上一步被借一所以减为0,0-0=0.
    由此推出:数不够减就向前借一位,然后该数加2.

    可见二进制和十进制减法的区别就是向前借一后加2.

    23个位运算技巧

    1.获得int型最大值`

    
    int getMaxInt(){
            return (1 << 31) - 1;//2147483647, 由于优先级关系,括号不可省略
    }
    

    另一种写法

    
    int getMaxInt(){
        return ~(1 << 31);//2147483647
    }
    

    C语言中不知道int占几个字节时候

    
    int getMaxInt(){
        return ((unsigned int) - 1) >> 1;//2147483647
    }
    

    2.获得int型最小值

    
    int getMinInt(){
        return 1 << 31;//-2147483648
    }
    
    //第二种
    int getMinInt(){//有些编译器不适用
        return 1 << -1;//-2147483648
    }
    

    3.获得long类型的最大值

    //C语言
    long getMaxLong(){
        return ((unsigned long) - 1) >> 1;//2147483647
    }
    //java
    long getMaxLong(){
        return ((long)1 << 127) - 1;//9223372036854775807
    }
    

    4.乘以2运算

    int mulTwo(int n){//计算n*2 
        return n << 1;  
    }
    

    5.除以2运算

    int divTwo(int n){//负奇数的运算不可用
        return n >> 1;//除以2
    }
    

    6.乘以2的m次方

    
    int mulTwoPower(int n,int m){//计算n*(2^m)
        return n << m;
    }
    

    7.除以2的m次方

    int divTwoPower(int n,int m){//计算n/(2^m)
        return n >> m;
    }
    

    8.判断一个数的奇偶性

    
    boolean isOddNumber(int n){ // 判断是否为奇数
    	return (n & 1) == 1;// n为奇数你。n为偶数时,n & 1 == 0。
    }
    

    9.不用临时变量交换两个数(面试常考)

    //c语言
    void swap(int *a,int *b){ 
        (*a) ^= (*b) ^= (*a) ^= (*b); 
    }
    
    //其他语言
    a ^= b;
    b ^= a;
    a ^= b;
    

    10.取绝对值(某些机器上,效率比n>0 ? n:-n 高)

    
    int abs(int n){
    return (n ^ (n >> 31)) - (n >> 31);
    /* n>>31 取得n的符号,若n为正数,n>>31等于0,若n为负数,n>>31等于-1 
    若n为正数 n^0=0,数不变,若n为负数有n^-1 需要计算n和-1的补码,然后进行异或运算, 
    结果n变号并且为n的绝对值减1,再减去-1就是绝对值 */
    }
    

    11.取两个数的最大值(某些机器上,效率比a>b ? a:b高)
    通用版

    int max(int a,int b){
        return b & ((a-b) >> 31) | a & (~(a-b) >> 31);
        /*如果a>=b,(a-b)>>31为0,否则为-1*/
    }
    

    C语言版

    int max(int x,int y){
        return x ^ ((x ^ y) & -(x < y));
        /* 如果x<y x<y返回1,否则返回0, 
    	与0做与运算结果为0,与-1做与运算结果不变 */
    }
    

    12.取两个数的最小值(某些机器上,效率比a>b ? b:a高)
    通用版

    int min(int a,int b){
        return a & ((a-b) >> 31) | b & (~(a-b) >> 31);
        /*如果a>=b,(a-b)>>31为0,否则为-1*/
    }
    

    C语言版

    int min(int x,int y){
        return y ^ ((x ^ y) & -(x < y));
             /*如果x<y x<y返回1,否则返回0, 
                与0做与运算结果为0,与-1做与运算结果不变*/
    }
    

    13.判断符号是否相同

    bool isSameSign(int x, int y){ //有0的情况例外
        return (x ^ y) >= 0; // true 表示 x和y有相同的符号, false表示x,y有相反的符号。
    }
    

    14.计算2的n次方

    int getFactorialofTwo(int n){//n > 0
        return 2 << (n-1); // 2的n次方
    }
    

    int getFactorialofTwo(int n) {
    	return 1 << n; // 2的n次方
    }
    
    

    15.判断一个数是不是2的幂

    bool isFactorialofTwo(int n){
        return n > 0 ? (n & (n - 1)) == 0 : false;
        /*如果是2的幂,n一定是100... n-1就是1111.... 
           所以做与运算结果为0*/
    }
    

    16.对2的n次方取余

    int quyu(int m,int n){//n为2的次方
        return m & (n - 1);
        /*如果是2的幂,n一定是100... n-1就是1111.... 
         所以做与运算结果保留m在n范围的非0的位*/
    }
    

    17.求两个整数的平均值

    int getAverage(int x, int y){
            return (x + y) >> 1;
    }
    

    另一种写法

    int getAverage(int x, int y){
            return ((x ^ y) >> 1) + (x & y); 
         /*(x^y) >> 1得到x,y其中一个为1的位并除以2, 
           x&y得到x,y都为1的部分,加一起就是平均数了*/
    }
    

    18.从低位到高位,取n的第m位

    int getBit(int n, int m){
        return (n >> (m-1)) & 1;
    }
    
    

    19.从低位到高位,将n的第m位置1

    int setBitToOne(int n, int m){
        return n | (1 << (m-1));
        /*将1左移m-1位找到第m位,得到000...1...000 
          n在和这个数做或运算*/
    }
    

    20.从低位到高位,将n的第m位置0

    int setBitToZero(int n, int m){
        return n & ~(1 << (m-1));
        /* 将1左移m-1位找到第m位,取反后变成111...0...1111 
           n再和这个数做与运算*/
    }
    

    21.取相反数

    ~n + 1;
    //或
     ~(n - 1)
    //或
    (n ^ -1) + 1;
    

    22.取整数n的二进制中最后一个1

    // 写法一:
    -n&n 
    // 写法二:
    (~n+1)&n
    // 写法三:
    ~(n - 1)&n
    

    23.去掉整数n的二进制中最后一个1
    如:n = 010100, n -1 = 010011, n&(n - 1) = 010000。

    n & (n - 1)
    

    另附一些对程序效率上没有实质提高的位运算技巧,一些也是位运算的常识(面试也许会遇到)

    1.计算n+1

    -~n
    

    2.计算n-1

    ~-n
    

    3.if(x == a) x = b; if(x == b) x = a;

    x = a ^ b ^ x;
    

    4.sign函数,参数为n,当n>0时候返回1,n<0时返回-1,n=0时返回0

    return !!n - (((unsigned)n >> 31) << 1);
    
    展开全文
  • 简单计算二进制加减法

    千次阅读 2021-10-22 09:29:06
    二进制就是计算机技术中广泛采用的一种数制,由(0,1)组成。你可以广泛的认为,每一个 0,1 都(存储在)对应着一个比特位(bit),而由这些由例如:01001011就是二进制。(计算机硬件通电的时,会产生电信号,而用...

    二进制就是计算机技术中广泛采用的一种数制,由(0,1)组成。你可以广泛的认为,每一个 0,1 都(存储在)对应着一个比特位(bit),而由这些由例如:01001011就是二进制。(计算机硬件通电的时,会产生电信号,而用0或1来表示,1为正数,0为负数 ,计算机会开辟一小块空间存储一个0或1,则称为一个比特,这里还科普一下 : 一个字节(byte)=8个比特位(bit)如:00000000).

    下面我们讲讲 二进制的计算:这里注意的一点是  二进制是逢 二进一

    如 : 计算  0010 加 1 是多少:

            首先 1 用二进制表示 为 :0001

    0010 + 0001 = 0011 对应的(转成)十进制就是3(1*2^1+1*2^0 = 3)

    不难发现他对应的就像小学的加减法 ,就是不同的是 逢 二进一

    着么是逢 二进一尼?再来看一到提

    如 : 计算 0011加 1是多少:

            首先 1 用二进制表示 为 :0001

        那么 0011+0001 ?我们画图计算来了解:

    所以 对应的 十进制 就是 4.

    不知道有没有同学不会 二进制 和十进制互转的,可以自行去了解下。 

    好,这里我们认识到了加法,我们再来说一下减法,其实也是类似的

    例如 : 0010减 1 是多少?注意:二进制 “退 1 为2”

          首先 1 用二进制表示 为 :0001

    直接上图给你演示:

    展开全文
  • 补码、二进制减法

    千次阅读 2020-04-13 20:40:56
    有关二进制的负数及减法运算二进制数表示方法:原码反码补码二进制减法运算法则: ** 二进制数表示方法: ** 无符号二进制数(正数)(8位)(能够表示的十进制数范围 0-255 ) 举例: 10(8’b0000_1010) 100(8’b...
  • 今天看了c语言中文网的关于十进制、二进制、八进制、16进制的加减法,佩服作者写的非常好,所以这里也给作者做个广告,欢迎大家通过c语言中文网学习c。之下的内容,也是想转载下来,供自己以后复习使用。 ...
  • 有符号数的表示法、加减法、补码 摘要:本文将会说明有符号数的表示方法,有符号数正负数之间的跳变,有符号负数的加减法,为什么采用补码等方面进行分析。 我是学过计算机原理的,也有有符号数和无符号数的概念,...
  • 二进制减法图解

    万次阅读 多人点赞 2018-09-01 12:23:21
    二进制减法类似于十进制的减法,我们从十进制的减法来推出二进制减法如何进行运算。 十进制减法 例如74323-47562=26761的运算。灰色部分为计算过程,绿色字为被减一得到的数,红色字为借一后得到的数。 在...
  • 原码的加减法 加法一共有四种可能: 正数 + 正数:取绝对值相加即可,结果是正数 负数 + 负数:取绝对值相加,结果是负数 正数 + 负数:绝对值大的数减去绝对值小的数,符号谁大取谁的符号 负数 + 正数:绝对值大的...
  • 二进制数的运算可分为二进制整数运算和二进制小数运算两种类型,但运算法则完全相同.由于大部分计算机中数的表示方法均采用定点整数表示法,故这里仅介绍二进制整数运算,二进制小数运算与它相同.在计算机中,经常...
  • 二进制怎么相加减

    万次阅读 多人点赞 2019-02-21 14:11:42
    1.二进制加法运算法则: 0+0=0,0+1=1,1+0=1,1+1=10 ,也就是当两个相加的二进制位仅一位为1时,相加的结果为1;如果两个二进制位全是0,相加的结果仍为0;而如果两个相加的二进制位均为1,则结果为10(相当于十...
  • 计算机原码,反码,补码的计算规则以及计算机内部二进制加减法举例 ##<1>. 原码:符号位+数组位;第一位为符号位,正数为0,负数为1;后面的位数为数值位,是真值的二进制表现形式。 反码:正数的反码就是原码...
  • 二进制加减乘除

    万次阅读 多人点赞 2011-08-25 10:38:49
    最重要的,理解十进制的借位和进位.十进制中,由于一个循环是10,所以借1位,就相当于从高位借过来10,也就是常说的借1当10,同时,高位需要减去10(外在体现上是减去1,因为高位已经在高位了).反过来,进1,就等于高位加上10,...
  • 二进制减乘除法全了看一下叭

    千次阅读 2022-01-09 20:24:38
    看这里~前言一、二进制加法二、二进制减法三、二进制乘法四、二进制除法总结 前言 最近在学习通信网络中的CRC算法,所以积累一下二进制的各种算法,如果对您有用,记得点个赞喔!谢谢啦。 一、二进制加法 对于...
  • 二进制四则运算

    千次阅读 2018-10-30 17:11:50
    二进制的原理如下: (注意加法的进位和减法的借位) 一、加法法则: 0+0=0,0+1=1,1+0=1,1+1=0(注意向前进位) 例如:11111+1=100000  11111 + 1 --------- 100000 因为最低一位1+1=0所以需要向前(高位...
  • 二进制数的运算规则

    万次阅读 2018-08-24 10:14:32
     (3) 乘法运算规则 例如:二进制数之间可以执行算术运算和逻辑运算,其规则简单,容易实现。  (1) 加法运算规则  0 + 0 = 0 例如: 1 1 0 1  0 + 1 = 1 +) 1 0 0 1  1 + 0 = 1  1 + 1 = 0 (产生进位) ...
  • 如果理解了十进制的四则算数运算法则,那么理解无符号二进制数的四则运算相对来讲就很简单了二进制数只有0和1两个数字,其算术运算较为简单,减法遵循“逢二进一”、“借一当二”的原则加法运算 运算规则:0+0=0...
  • 无符号二进制数的算术运算

    万次阅读 2019-02-24 19:50:16
    无符号二进制数的、减、乘、除四则算数运算法则其实与十进制数的四则算数运算法则是一一对应的。如果你理解了十进制的四则算数运算法则,那么理解无符号二进制数的四则运算相对来讲就很简单了 –引用自王达老师...
  • 减法运算 二进制减法运算遵循法则:0-0=0,1-0=1,1-1=0,0-1=1(有借位) 二、有符号数的算术运算 1. 原码运算 由上述例题可见,原码减运算复杂。因为操作数取绝对值运算,所以实际操作不仅取决于操作码(是...
  • 二进制乘除法运算原理

    万次阅读 多人点赞 2020-04-01 16:42:32
    计算机所能完成的最基本操作是加减法和左右移。 虽然ISA中一般都有MUL类指令,但是这些经过译码之后最终的元操作还是加法和移位指令。 二进制乘法 假设不能使用乘除运算求a×b的结果,当a=b=123时,最直接的方法是...
  • 二进制数的算术运算

    万次阅读 2019-10-27 11:24:54
    二进制数的算术运算包括加法、减法、乘法和除法。 1)加法运算 加法进位规则:逢二进一。 加法运算法则: 0+0=0 0+1=1+0=1 1+1=10(向高位进位) 例:(1101)2+(1011)2=?,解算如下: 从执行加法的过程可知,两个二进制数...
  • 二进制数的运算方法

    万次阅读 多人点赞 2017-08-29 14:12:13
    二进制数的算术运算包括:、减、乘、除四则运算,下面分别予以介绍。 (1)二进制数的加法 根据“逢二进一”规则,二进制数加法的法则为: 0+0=0 0+1=1+0=1 1+1=0 (进位为1) 1+1+1=1 (进位为1...
  • 进制转换、运算法则
  • 一、二进制运算1. 按位与(&)位运算实质是将参与运算的数字转换为二进制,而后逐位对应进行运算。按位与运算为:两位全为1,结果为1,即1&1=1,1&0=0,0&1=0,0&0=0。例如51 & 5 -> ...
  • 二进制是如何将减乘除变换为加法实现的?加法是如何由逻辑运算与、或、异或来实现的?关注者151被浏览10205查看全部13个回答匿名用户5分钟教会你古中国人古埃及人和计算机如何用二进制做乘除法 。 有空整理找的“1...
  • .原码的除法 除法的商都是 从右往左 写,但是最后答案就是从左往右 1. 恢复余数法 因为除法是利用减法实现的,涉及到符号,所以我们使用补码 但是整体是原码的除法,因此利用[y]补,[-y]补 如果我们的x减去y的补码...
  • 二进制运算

    千次阅读 2021-11-02 15:47:48
    前置知识: 1.二进制如何转化为十进制 例如: 1.二进制数1101.01转化成十进制 1101.01(二进制)=1*2^0+0*2^1+1*2^2+1...1、它由两个数码0,1组成,二进制运算规律是逢二进一。 2、二进制数的书写通常在数的右下
  • 采用二进制补码,我们剔除了减法运算,仅需要补码器和一个加法器即可实现二进制加减法器。当执行减法时,我们对减数N取补,而执行加法时,无须对N取补。这些操作可以利用一个可选的补码器和加法器相连而形成的加减...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,624
精华内容 1,449
热门标签
关键字:

二进制加减法运算法则