[问题] unsigned int bitwise operator

楼主: shiningboy   2018-05-14 00:30:53
开发平台(Platform): (Ex: Win10, Linux, ...)
Lubuntu (Linux)
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
n/a
问题(Question):
大家好,新手自学
#include <stdio.h>
#include <stdlib.h>
int main(){
unsigned int a = 10;
signed int b = 10;
a = ~a;
b = ~b;
printf("a : %d\n");
printf("b : %d]n");
}
output :
a = -11
b = -11
这边的问题是有关于 a
a = 10 , in bit 应该是
00000000 00000000 00000000 00001010
a = ~a 之后
11111111 11111111 11111111 11110101
^
not sign bit
我这边一开始设定 a 是 unsigned int
也就是应该第 32 bit 应该不是 sign bit
所以 print out in %d 之后预期的结果应该是 unsigned int 的 最大值 - 10
可是为什么变成了 -11
再请各位前辈解惑了
谢谢
喂入的资料(Input):
资料如上
预期的正确结果(Expected Output):
预期为 unsigned int 最大值 - 11
错误结果(Wrong Output):
no error code
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
code 如上
补充说明(Supplement):
n/a
作者: jobsdone (完工了)   2018-05-14 00:36:00
%u
作者: cutekid (可爱小孩子)   2018-05-14 00:36:00
%d 造成的唷。改%u
作者: djshen (djshen)   2018-05-14 00:40:00
你可以查printf的文件
作者: rbufghj9713 (我只是来潜水)   2018-05-14 11:37:00
资料长那样没错,不过解读的方法错了
作者: chuegou (chuegou)   2018-05-14 19:43:00
你是不是在找2补数?
作者: rbufghj9713 (我只是来潜水)   2018-05-14 21:04:00
刚刚才发现一件事情,你预期的正确结果应该是-10吧?你好像写成-11了

Links booklink

Contact Us: admin [ a t ] ucptt.com