二进制取补运算 有符号输出int s1 = 10;s1 = s1;输出结果为什么是-11?【书上的解释】32位整数10的二进制是 00000000 00000000 00000000 00001010取补后的结果就是 11111111 11111111 11111111 11110101有符号时最

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 17:15:36
二进制取补运算 有符号输出int s1 = 10;s1 = s1;输出结果为什么是-11?【书上的解释】32位整数10的二进制是 00000000 00000000 00000000 00001010取补后的结果就是 11111111 11111111 11111111 11110101有符号时最

二进制取补运算 有符号输出int s1 = 10;s1 = s1;输出结果为什么是-11?【书上的解释】32位整数10的二进制是 00000000 00000000 00000000 00001010取补后的结果就是 11111111 11111111 11111111 11110101有符号时最
二进制取补运算 有符号输出
int s1 = 10;
s1 = s1;
输出结果为什么是-11?
【书上的解释】
32位整数10的二进制是 00000000 00000000 00000000 00001010
取补后的结果就是 11111111 11111111 11111111 11110101
有符号时最左边的1视为符号,转换为整数是 -11
【疑惑】
最后一句不懂.最左边就是指32位里第一位的1吧?然后怎么算的啊?为啥得到-11?

二进制取补运算 有符号输出int s1 = 10;s1 = s1;输出结果为什么是-11?【书上的解释】32位整数10的二进制是 00000000 00000000 00000000 00001010取补后的结果就是 11111111 11111111 11111111 11110101有符号时最
int s1 = 10;
32位整数的二进制为:
00000000 00000000 00000000 00001010
s1 = s1;
按位取反之后为:
11111111 11111111 11111111 11110101
由于是有符号整数(int),并且最高位是1,所以是负数.
负数的真值为补码,即除了符号位以外,每位取反,结果加1:
1、除符号位以外,每位取反:
10000000 00000000 00000000 00001010
2、结果加1:
10000000 00000000 00000000 00001011
所以是-11.
如果还有疑问,可以找 原码、反码、补码相关的知识看看.

二进制取补运算 有符号输出int s1 = 10;s1 = s1;输出结果为什么是-11?【书上的解释】32位整数10的二进制是 00000000 00000000 00000000 00001010取补后的结果就是 11111111 11111111 11111111 11110101有符号时最 这样输出乘除等运算符号? -8的4位二进制形式什么有点搞不懂usigned int 和int的二进制编码了,我们换个位数少的来看,有符号的4位二进制表数范围是-8到7,最高位1表示负数,0表示正数,那么7就是0111,负数最小的时候不是1111 运算符号有哪些?()算运算符号吗? 集合的补运算和差运算有什么区别 相对补运算和绝对补运算各是什么?有什么区别和联系? 运算符号 运算符号. 运算符号 二进制 有符号数运算 换成补码? matlab中数值运算与符号运算有何异同 度程序,求好心人写出运行结果写出运行下面的程序后的输出结果#include Using namespace std;class base {int n;friend int add(base &s1,base &s2);}int add(&s1,base &s2){return s1.ns2.n;}void main(){base A(29),B(11);cout 用c语言编程“用键盘输入两个数和运算符号输出结果” #include void main() { int k=-1; printf(%d,%u ,k,k); }尤其是无符号类型的输出问题 求大神告知这个计算器的程序有哪些错误.能运行,但是输出的答案完全不对,而且减法运算还没办法运行.#include#include#includedouble A1,a1,A2,a2,A3,S1,s1,S2,s2,S3,M1,m1,M2,m2,M3,D1,d1,D2,d2,D3;double Dsin=0.0,Ds,Dcos c语言int i,a=3,b=3;i=(--a==b++)?--a:++b;输出i,a,b的值,这道题--a==b++这里的运算顺序是什么?我想知道这种运算有没有运算规则?最好具体点, 求32位有符号2进制数加法运算详细解答A的补数16进制形式=0000007FH,B的补数16进制形式=FFFFFFF7HA+B=?其中A和B都是有符号的其实这道题的原题是:一个C语言程序在一台32位机器上运行.程序中定义 mod 关于负数的运算-3 mod 2 =多少3 mod -2 =多少在office的帮助里面有公式MOD(n,d)=n-d*INT(n/d)结果是1和-1就是余数和除数符号一样但是在pscal里面运算测试的结果却是-1和1就是余数和被除数符号一样