为什么此代码片段的输出为 -33

2024-01-18

#include<stdio.h>

int main()
{
    int a=32;
    printf("%d\n", ~a);  //line 2
    return 0;
}

o/p = -33

实际上在原始片段第 2 行中是

 printf("%x\n", ~a);  //line 2

我解决了它像

32 in hex is 20.
0000 0000 0010 0000
now tilde operator complements it
1111 1111 1101 1111 = ffdf.

当我有时我很困惑如何解决它

printf("%d\n", ~a);  //line 2 i.e %d NOT %x.

在 C 实现中,与任何编程语言的大多数现代实现一样,有符号整数用补码 http://en.wikipedia.org/wiki/Two%27s_complement.

在二进制补码中,高位表示负数,并且值的编码方式如以下示例所示:

Bits  Decimal
0…011 +3
0…010 +2
0…001 +1
0…000  0
1…111 -1
1…110 -2
1…101 -3

Thus, if the usual (unsigned) binary value for the bits is n and the high bit is zero, the represented value is +n. However, if the high bit is one, then the represented value is n-2w, where w is the width (the number of bits in the format).

So, in an unsigned 32-bit format, 32 one bits would normally be 4,294,967,295. In a two’s complement 32-bit format, 32 one bits is 4,294,967,295 - 232 = -1.

In your case, the bits you have are 1111 1111 1111 1111 1111 1111 1101 1111. In unsigned 32-bit format, that is 4,294,967,263. In two’s complement, it is 4,294,967,263 - 232 = -33.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么此代码片段的输出为 -33 的相关文章

随机推荐

  • 如何监控第三方存储库的 GitHub 提交

    初学者在这里 我已为由其他人创建和管理的 GitHub 存储库加注星标 有没有办法监视提交并在每次有人签入主分支时向侦听器发送电子邮件 请注意 我不拥有该存储库 我只是想跟踪我喜欢的存储库上的更改 您可以获得原子饲料 https en wi
  • 如何解决此类问题?

    br br br div style line height 50 span style display block span div
  • Swift:如何查看 Xcode 监视窗口中显示的变量值?

    简单的问题 使用 Swift 时如何查看 Xcode 监视窗口中变量的值 这是一个示例 看看 mdn 如何具有值 2067134273 但无法在监视窗口中查看该值 ObjectiveC NSObject 不会扩展为任何内容 我认为这可能是由
  • Matplotlib 在绘图区域内移动刻度标签

    是否可以在绘图区域内放置刻度标签 我已经尝试过 ax tick params axis y pad 5 left off labelleft on and ax tick params axis y direction in left of
  • 为什么在 ASP.NET MVC 中使用数据库工厂?

    最近我使用了 asp net mvc 我在示例项目中看到正在使用数据库工厂类 您如何向我解释为什么使用它 IDatabaseFactory类 public interface IDatabaseFactory IDisposable EFM
  • Sharepoint 2007:为自定义字段类型创建多行文本自定义属性?

    我正在尝试扩展内置的 Choice 字段类型以包含另一条数据 正确答案 这样 用户将能够直接在 Sharepoint 中创建自己的测试 而不必使用 InfoPath 或其他一些复杂的解决方案 我希望继承现有的 SPFieldChoice 类
  • 如何将手动创建的 WebJobs 发布到 Azure

    我按照本文创建了一个针对 NET Core 的 WebJobs 应用程序 http matt roberts me azure webjobs in net core 2 with di and configuration http mat
  • 部分申请和关闭

    有人问我偏函数应用和闭包之间有什么关系 我会说没有 除非我没有抓住重点 假设我正在用 python 编写 并且有一个非常简单的函数 MySum 定义如下 MySum lambda x y x y 现在 我正在修复一个参数以获得一个具有较小数
  • Xperia XA1 ultra 不显示 Logcat 消息

    您好 当我在 android studio 中使用 Sony Xperia XA1 Ultra 调试我的应用程序时 不会出现调试和详细日志 我的手机运行的是Android 8 0 我已经安装了必要的驱动程序并使用另一部手机 Sony Xpe
  • 是否允许为 std::array 定义专门化?它会导致未定义的行为吗?

    我正在一个有课程的图书馆工作foo foo有一个不平凡的构造函数 当我创建一个std array of foo std array
  • Android 引起:java.lang.NullPointerException

    我现在编辑它 我正在检查布局和初始化 但仍然是相同的错误 这可能是 eclipse 错误吗 public class ActivityOwner extends Activity implements OnClickListener Edi
  • c99 转到过去的初始化

    在调试崩溃时 我在一些代码中遇到了这个问题 int func char p1 malloc if p1 NULL goto err exit char p2 malloc if p2 NULL goto err exit err exit
  • 如何在 RxSwift 中编写行的高度?

    我想将下面的代码转换为RxSwift 还请帮我如何写按钮Action代码在RxSwift ReactiveCocoa or RxSwiftswift3中用哪一个比较好 func tableView tableView UITableView
  • pyplot x 轴正在排序

    这一切都在 Windows 7 x64 位机器上 在 PyCharm Educational Edition 1 0 1 编译器中运行 python 3 4 3 x64 位 该计划使用的数据取自纽约市的 Citi Bike 计划 数据可在此
  • Delphi XE5编译设置中的“有限调试信息”和“调试信息”有什么区别

    Win32 的 Delphi XE5 编译器对调试信息有新的设置 有限的调试信息 有什么区别有限的调试信息 and 调试信息 一些编译器提供调试标志的变体 提供不同级别的调试信息和优化 根据编译和链接程序时使用的选项 程序可执行文件中可用的
  • HASH函数的一致性

    一个非常简单的问题 哪个版本的 CityHash 隐藏在HASHBigQuery 的功能 它总是最新的 今天 v1 1 还是固定版本 现在 介绍一点背景 我计划严重依赖 BigQuery 来存储大量数据 从这些数据中 我想第一次计算一些哈希
  • 在 Shiny 应用程序中同步两个 rHandsontable 输出之间的列顺序

    我正在构建一个闪亮的应用程序 它并排显示两个表格 一个控制表和一个预览表 控制表显示预览表的列名称 用户可以通过拖放列来更改其顺序来操作它们 用户还可以编辑控制表中的列名称 所做的更改会反映在预览表中 但是 我在同步控制表和预览表之间的列顺
  • 在 Pentaho Kettle 中使用变量名称进行数据库连接

    我正在研究 PDI 水壶 我们可以定义一个变量并在数据库连接名称中使用它吗 因此 如果将来我需要更改多个转换中的连接 我只需更改水壶属性文件中的变量值即可 只需使用变量Database Connection 例如 DB HostName a
  • 如何在Java中完全独立地运行一个进程

    我有一个 Java 程序 它启动另一个进程ProcessBuilder像下面这样 String commands ruby home scripts script rb ProcessBuilder builder new ProcessB
  • 为什么此代码片段的输出为 -33

    include