鱼C论坛

 找回密码
 立即注册
查看: 2890|回复: 7

关于按位取反的问题

[复制链接]
发表于 2014-4-9 22:18:33 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 拈花小仙 于 2014-4-10 00:41 编辑

#include <stdio.h>
int main()
{
    int i = ~3;         //   3的二进制表示为 0000 0000 0000....11   取反后因为1111 1111 1111..00。
    printf("%d",i);   // 可输出的数字是1111 1111...00 取反在1的结果,而不是11111..00,这是为什么?
    return 0;
}

1111 1111 1111 1111 1111 1111 1111 1100 换算成十进制是4294967292
把1111 1111 1111 1111 1111 1111 1111 1100 取反在+1才是 -4

最佳答案

查看完整内容

32位操作系统 3的二进制是 0000 0000 0000 0000 0000 0000 0000 0011 取反后是 1111 1111 1111 1111 1111 1111 1111 1100 换成10机制是-4 有什么不对的吗? 二进制从0开始 0的取反不会是0而是-1 那么0 取反为-1 1 取反为-2 2 取反为-3 3 取反为-4 不明白你说的+1是什么概念
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-9 22:18:34 | 显示全部楼层
本帖最后由 machimilk 于 2014-4-9 22:53 编辑

32位操作系统 3的二进制是 0000 0000 0000 0000 0000 0000 0000 0011
取反后是                            1111 1111 1111 1111 1111 1111 1111 1100
换成10机制是-4 有什么不对的吗?
二进制从0开始 0的取反不会是0而是-1
那么0 取反为-1
       1 取反为-2
       2 取反为-3
       3 取反为-4
不明白你说的+1是什么概念
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-9 23:23:16 | 显示全部楼层

1111 1111 1111 1111 1111 1111 1111 1100 换算成十进制是4294967292
把1111 1111 1111 1111 1111 1111 1111 1100 取反在+1才是 -4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-10 00:23:11 | 显示全部楼层
本帖最后由 machimilk 于 2014-4-10 00:30 编辑
拈花小仙 发表于 2014-4-9 23:23
1111 1111 1111 1111 1111 1111 1111 1100 换算成十进制是4294967292
把1111 1111 1111 1111 1111 1111  ...

你确定你是32位4字节(双字)操作的???????
字节=byte 1字节 8位
字=word 2字节 16位
双字=dword 4字节 32位
4字=qword 8字节 64位
看图对比一下
4.png 0.png




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-10 00:40:37 | 显示全部楼层
machimilk 发表于 2014-4-10 00:23
你确定你是32位4字节(双字)操作的???????
字节=byte 1字节 8位
字=word 2字节 16位

哦哦,我用的操作系统,CPU,编译工具全是64位的,可输出的还是32位,是为了兼容吗?还是因为64位数一般用不到,所以默认以32位输出呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-10 01:28:54 | 显示全部楼层
拈花小仙 发表于 2014-4-10 00:40
哦哦,我用的操作系统,CPU,编译工具全是64位的,可输出的还是32位,是为了兼容吗?还是因为64位数一般用 ...

因为你定义的int形式 关于int在你64位系统里面到底是多少字节 用 sizeof(int)算算,就知道64位系统的int到底是不是按4字节了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-10 15:45:02 | 显示全部楼层
printf("%u",i);//试试这个

评分

参与人数 1鱼币 +5 收起 理由
拈花小仙 + 5 谢谢帮助,嘻!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-4-12 23:11:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 00:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表