按位非运算符解释

2024-04-06

为什么按位非运算符 (~在大多数语言中)会像这样转换以下值:

-2 -> 1
-1 -> 0
0 -> -1
1 -> -2

不应该-2转换成2, 1转换成-1, etc.?


See 二进制补码 http://en.wikipedia.org/wiki/Two%27s_complement用于许多语言中负整数的表示。如您所见,-2 表示为1111110;如果你反转你得到的所有这些位0000001,即值为 1。

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

按位非运算符解释 的相关文章

  • Java 中的按位与 (&) 表达式

    我正在调试其中的代码expr1 expr2 where expr1有一个影响的副作用expr2评价结果 我怀疑expr2之前被评估过expr1 因为 JLS 保证从左到右评估 但不一定是为了 我还怀疑评估顺序的更改可能是 HotSpot 执
  • 如何将按位运算应用于 JS 数字的实际 IEEE 754 表示?

    在 JavaScript 中 每当您执行按位运算时 例如x lt lt 2 在实际发生移位之前 64 位浮点表示形式会转换为 32 位无符号整数 我有兴趣将这种转换应用于实际的 未改变的 IEEE 754 位表示 这怎么可能 您可以尝试先将
  • 什么是位掩码?

    我对 C 编程相当陌生 并且遇到了位掩码 位掩码的一般概念和作用是什么 非常感谢例子 掩码定义要保留哪些位以及要清除哪些位 屏蔽是将屏蔽应用于值的行为 这是通过执行以下操作来完成的 按位与运算以提取值中的位子集 按位或运算以设置值中的位子集
  • 位运算符优先级

    我在类 C 语言中遇到过几次的问题是 original included excluded BAD 由于优先级 它解析为 original included excluded excluded has no effect 有谁知道三个独立优
  • 如何在 C++ 中访问数字的符号位?

    我希望能够访问 C 中数字的符号位 我当前的代码看起来像这样 int sign bit number gt gt 31 这似乎有效 给了我0对于正数和 1对于负数 但是 我不明白我是如何得到的 1对于负数 如果 12 是 0000 0000
  • Java 中的逻辑表示法

    绝对基本的 Java 问题 我在 Google 上很难找到 以下是什么意思 7 8 0 这相当于写 7 0 8 0 我写了一个快速的 main 来测试这一点 情况似乎确实如此 我只是想确保我没有遗漏任何东西 Nope is 按位和 http
  • 以下对于 C 编程中的按位运算意味着什么?

    一本关于 C 编程的书指出 enum corvid magpie raven jay chough corvid num define FLOCK MAGPIE 1 U define FLOCK RAVEN 2 U define FLOCK
  • 用于从 H/W 寄存器读取的位字段

    我想从32位寄存器中读取第2位 第5位和第6位 我决定使用结构位字段来存储它们 下面的数据结构正确吗 struct readData int unwanted 1 int reqbit1 1 int unwanted1 2 int reqb
  • 对 char 进行按位运算给出 32 位结果

    我一直在用 C 编写一个程序 将字符的前 4 位移至末尾 将后 4 位移至开头 对于大多数值 它可以正常工作 以及相反的操作 但对于某些值 如 8 x y z 它给出的结果是 32 位值 通过打印变量的十六进制值检查值 谁能解释为什么会发生
  • 为什么对文字使用异或而不是反转(按位非)

    我遇到过这个CRC32代码 http www opensource apple com source xnu xnu 1456 1 26 bsd libkern crc32 c很好奇为什么作者会选择使用 crc crc 0U 代替 crc
  • 按位求补运算符

    你们能解释一下下面的程序吗 int main int max 0 printf d n max return 0 AFAIK 会翻转位 在这种情况下 即 0 会将所有位设置为 1 因此 max 变量应包含 MAX 值 但我得到的 o p 为
  • 按位运算符和整数提升是怎么回事?

    我有一个简单的程序 请注意 我使用大小为 1 字节的无符号固定宽度整数 include
  • 使用 MongoDB 官方 C# 驱动程序进行按位枚举(标志)查询

    当我尝试运行以下形式的 LINQ 查询时 MongoCollection
  • 按位运算符的结果是如何产生的?

    我很惊讶我在谷歌上找不到这个听起来简单的问题的答案 在检查了大约十几个不同的页面之后 我只想在这里问 根据这一页 http www leepoint net notes java data expressions bitops html 3
  • 什么是位掩码?

    我对 C 编程相当陌生 并且遇到了位掩码 位掩码的一般概念和作用是什么 非常感谢例子 掩码定义要保留哪些位以及要清除哪些位 屏蔽是将屏蔽应用于值的行为 这是通过执行以下操作来完成的 按位与运算以提取值中的位子集 按位或运算以设置值中的位子集
  • C++14 是否定义了 unsigned int 填充位上按位运算符的行为?

    C 标准 If a C 14 http www open std org jtc1 sc22 wg21 docs papers 2013 n3797 pdf实现包括在底层字节中填充位unsigned int 标准是否指定是否不得对填充位执行
  • Java 中 & 和 && 有什么区别?

    我一直以为 Java中的运算符用于验证其两个布尔操作数是否为true 以及 运算符用于对两个整数类型进行按位运算 最近我才知道 运算符也可用于验证其布尔操作数是否为true 唯一的区别是即使 LHS 操作数为 false 它也会检查 RHS
  • C 中的大于函数

    我知道这是一个古老的问题 您可能也遇到过这个问题 但我的解决方案中有一个错误 我不知道如何解决它 我需要编写一个比较两个整数的函数 我只允许使用操作 gt gt isGreater int x int y returns 1 if x gt
  • 位运算符,而不是在分支中使用异或

    问完后这个问题 https stackoverflow com questions 22336015 why use xor with a literal instead of inversion bitwise not 我收到了 Ando
  • 按位移位(左移或右移)有什么作用以及它的用途是什么?

    我见过运营商 gt gt and lt lt 在我看过的各种代码中 我真正理解的都不是 但我只是想知道它们实际上做了什么以及它们的一些实际用途是什么 如果班次就像x 2 and x 2 与实际使用的真正区别是什么 and 运营商 有性能差异

随机推荐