为什么10的按位补码是-11

为什么10的按位补码是-11,第1张

概述为什么~10的结果是-11?不应该是5,因为〜 *** 作翻转每一点. 10 = 1010 〜10 = 0101 // 5十进制 #include<stdio.h>int main(){ unsigned int b =10; b= ~b; printf("bitwise %d\n ",b); return 0;} 不要忘记你正在翻转每一位,包括最重要的 为什么~10的结果是-11?不应该是5,因为〜 *** 作翻转每一点.

10 = 1010

〜10 = 0101 // 5十进制

#include<stdio.h>int main(){    unsigned int b =10;    b= ~b;    printf("bitwise %d\n ",b);         return 0;}
解决方法 不要忘记你正在翻转每一位,包括最重要的位(有符号变量的符号位).将变量定义为无符号不会更改二进制表示,只会更改程序使用它的方式.

因此,当您将数字打印为签名(%d)时,您将获得-11.

10 = 0x0000000A (10)~10 = 0xFFFFFFF5 (-11 signed / 4294967285 unsigned)

要打印为未签名使用:

printf("bitwise %u\n ",b);
总结

以上是内存溢出为你收集整理的为什么10的按位补码是-11全部内容,希望文章能够帮你解决为什么10的按位补码是-11所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存