精华内容
下载资源
问答
  • 解析:已知x和-x的反码是互为相反的,所以已知x的补码,[x]反=[x]补-1,1.已知8位二进制表示的整数X的补码为10011011,则-X的补码的二进制编码为(01100101)。解析:已知x和-x的反码是互为相反的,所以已知x的补码,...

    1.已知8位二进制表示的整数X的补码为10011011,则-X的补码的二进制编码为(01100101)。解析:已知x和-x的反码是互为相反的,所以已知x的补码,[x]反=[x]补-1,

    1.已知8位二进制表示的整数X的补码为10011011,则-X的补码的二进

    制编码为( 01100101 )。

    解析:已知x和-x的反码是互为相反的,所以已知x的补码,[x]反 = [x]补  - 1,

    (x为负数)

    那么-x(-x为正数)的 补码为[-x]补  = [-x]反   = -([x]补  - 1) = -[x]补 + 1

    先各位取反,0变成1,1变成0。然后最低位加一。

    要是这样想:

    给定一个正数的补码,怎么求他的相反数的补码?

    解析:正数的原,,反,补码相同。

    他的相反数的原码是修改符号位(最高位),

    反码是除了符号位,其余各位按位取反,

    补码是反码+1

    So,这个过程就每位按位取反,然后加1

    问:给定一个负数的补码,怎么求他的相反数的补码?

    解析:那自然是上过程逆过程:

    先减一,在按位取反

    见上过程,即为按位取反,再加一

    X=10011011 -X=01100101 -2X=(-X左移一位补零,多的那位忽略)11001010;

    1/2 X=11001101(看X,右移一位原来第一位是什么现在还是什么) ;-1/2X=00110010(同理,看-X)

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    展开全文
  • 求一个整数的相反数

    千次阅读 2018-08-06 10:30:08
    求一个整数的相反数 补码之间存在这样的关系:将一个数的补码按位取反,末位加1就得到这个补码数的相反数。 下面的代码是举例出10的相反数。 #include<stdio.h> int main(void) { int a; a=~...

    求一个整数的相反数

    • 补码之间存在这样的关系:将一个数的补码按位取反,末位加1就得到这个补码数的相反数。
    • 下面的代码是举例求出10的相反数。
    #include<stdio.h>
    int main(void)
    {
        int a;
        a=~10+1;
        printf("%d",a);
        return 0;
    }
    • 具体的原因大家可以参考计算机组成原理或者计算机组织结构等书籍。
    展开全文
  • 求一个数的相反数算法

    千次阅读 2007-01-16 17:21:00
    求一个数的相反数算法(inverse to X modulo (1 (相反数的定义是:Y 使(X * Y) mod (1 /* */param x X:inverse to X modulo (1 */param mod MOD:inverse to X modulo (1 */return the inverse number */static ...

    求一个数的相反数算法(inverse to X modulo (1 << MOD))
    (相反数的定义是:求Y 使(X * Y) mod (1 << MOD) ==  1)

    /*
     */param x X:inverse to X modulo (1 << MOD)
     */param mod MOD:inverse to X modulo (1 << MOD)
     */return the inverse number
     */
    static unsigned long inverse (unsigned long x, int mod)

     unsigned long mask = ((unsigned long) 1 << (mod - 1) << 1) - 1;
     printf("mask=%lu,%x/n",mask,mask);
     unsigned long rslt = 1;
     int i;
     for (i = 0; i < mod - 1; i++)
      {  
      rslt = (rslt * x) & mask;  
      x = (x * x) & mask;
      //printf("%d) rslt=%lu/tx=%lu/n",i,rslt,x);
     } 
     return rslt; 
    }

    一般的算法都是用Euclidean的逆步骤去解,但是这个算法不是。这个算的基本原理如下:
    X为奇数时,存在0<i<mod,使得X^(2^i) % (2^mod) = 1
    (这个我证明了一下,不难,我就不贴了)
    即:X,X^2,X^4,X^8,X^16……X^2^(mod-1)里面一定有一个数,使X^(2^i) % (2^mod)=1
    然后,X^(2^i-1)即为所求。

    还有一个定理需要说明:X*Y % a =(X % a)*(Y % a) % a,
    也就是:两个数相乘后取模,等于取模后相乘,再取模。这个也不用证明了吧。

    注意算法里的mask=2^mod - 1 ,二进制表示为111111(mod个1)
    ps.不知道为什么写成 1<<(mod-1)<<1 - 1,而不直接写成 1<<mod - 1
    进行a & mask操作,相当于进行a%(2^mod)操作。
    这是用&操作进行的优化。

    现在看循环里的操作就比较简单了:
    (先不看rslt)
    循环里的X不断自乘,然后后取模,
    所以X的值依次为
    X(初始值)

    附测试函数:
    int main()
    {
     unsigned long x;
     int mod;
     scanf("%lu %d,",&x,&mod);
     printf("%lu ",inverse(x,mod));
     return 0;
    }
     

    展开全文
  • 求一个数的相反数的补码

    万次阅读 2015-07-16 20:50:35
    解析:已知x和-x的反码是互为相反的,所以已知x的补码,[x]反 = [x]补 - 1, (x为负数) 那么-x(-x为正数)的 补码为[-x]补 = [-x]反 = -([x]补 - 1) = [x]补 + 1   先各位取反,0变成1,1变成0...

    1.已知8位二进制表示的整数X的补码为10011011,则-X的补码的二进

    制编码为( 01100101 )。

     

    解析:已知x和-x的反码是互为相反的,所以已知x的补码,[x]反 = [x]补  - 1,

    (x为负数)

    那么-x(-x为正数)的 补码为[-x]补  = [-x]反   = -([x]补  - 1) = -[x]补 + 1

     

    先各位取反,0变成1,1变成0。然后最低位加一。

     

    要是这样想:

    给定一个正数的补码,怎么求他的相反数的补码?

     

    解析:正数的原,反,补码相同。

    他的相反数的原码是修改符号位(最高位)

    反码是除了符号位,其余各位按位取反,

    补码是反码+1

     

    So,这个过程就每位按位取反,然后加1

     

    问:给定一个负数的补码,怎么求他的相反数的补码?

    解析:那自然是上过程逆过程:

    先减一,在按位取反

     

    见上过程,即为按位取反,再加一

     

    X=10011011 -X=01100101 -2X=(-X左移一位补零,多的那位忽略)11001010;

    1/2 X=11001101(看X,右移一位原来第一位是什么现在还是什么) ;     -1/2X=00110010(同理,看-X)


    展开全文
  • 求相反数

    千次阅读 2017-09-09 20:24:38
    求相反数
  • 问题描述: 怎么样快速得到一个数 x 的相反数? x 是整数、x 是浮点数 问题分析:
  • 求相反数

    2018-07-31 10:34:19
    为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的...
  • 相反数

    2020-02-20 14:16:53
    为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果...
  • 行代码出输入数的相反数

    千次阅读 2016-05-28 12:26:23
     * 文件名称:用行代码出输入数的相反数  * 作者:马康泰  * 完成日期:2016.5.28  * 版本号:v1.0  *  * 问题描述:。  * 输入描述:  * 程序输出: #include 非必需 */ #incl
  • 位运算求相反数

    千次阅读 2016-06-10 08:52:29
    对于正数的相反相反数来说,原码就是除符号位变为1,其他不变,计算机中 对于一个数字来说存储的都是其补码,负数的补码为符号位不变其他位按位取反,然后将得到的结果+1 而~n+1的过程第一步就是将符号为变为1,变为...
  • 证1:模加可求相反数。 证明: 证2:取反+1可求相反数。 证明:
  • Verilog求相反数

    千次阅读 2016-10-23 23:57:03
    目的操作:将数据取相反数。即8变-8,-7变7。  误区:仅仅是“取反加1” 误区操作的后果: 若data=1000,表示为-8,取反加一后仍为1000,仍为-8 module minusdata; reg clk; reg [3:0]cnt; wire [3:0]...
  • 相反数

    2018-10-15 13:53:15
    请你编一个程序出它们中有多少对相反数(a 和 -a 为一对相反数)。 输入描述 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同...
  • 我们知道,对于用源码表示的数中,如果一个正数和一个负数除符号位不同,其他位均相同的话,那么他们互为相反数。从这个规则可知,如果我们将一个正数的符号位取反,那么将得到这个数用原码表示的相反数。同时,我们...
  • 在JAVA中Decimal的相反数,只需要调用negate方法, System.out.println(new BigDecimal(10).negate()); System.out.println(new BigDecimal(-3).negate()); ...
  • 输入一个数,输出它的相反数

    千次阅读 2018-03-01 10:11:00
    输入一个带符号的整数,得到它的相反数: 例1: 输入: 123 输出: 321 例2: 输入: -123 输出: -321 例3: 输入: 120 输出: 21public int reserve(int x){ int result = 0; while(x!=0...
  • 为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的...
  • 相反数问题

    千次阅读 2017-09-10 11:33:11
    /(ㄒoㄒ)/~~)一个整数1234与它倒序数4321和称之为相反数。现在的问题要求是:从控制台输入一个整数n (1 ≤ n ≤ 10 ^ 5),输出它的相反数。如1234,就输出1234 + 4321 = 5555。#从容入坑既然待处理的值是一个整数,...
  • 相反数 问题

    2021-07-17 10:51:34
    请你编一个程序出它们中有多少对相反数(a 和 -a 为一对相反数)。 输入格式  第一行包含一个正整数 N。(1 ≤ N ≤ 500)。  第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 500,298
精华内容 200,119
关键字:

怎样求一个数的相反数