对负数进行逐位运算

时间:2014-01-23 10:45:10

标签: c

我正在读一本关于C的书,在某些部分它说:“按位操作通常与无符号类型一起使用。”。

问题:为什么?

3 个答案:

答案 0 :(得分:5)

仅仅因为没有立即清楚签名号的符号位上的位操作应该是什么意思。

  • 无符号类型没有特殊位,一切都可以正常工作 前进。
  • 有符号的类型有一个特殊的符号位,可以解释它 三种不同的编码来表示负值(一和二的补码或符号和幅度)。

答案 1 :(得分:0)

从编程语言的角度来看,无符号并不意味着它不能是负面的。这意味着,该数字的第一位不用于确定该值是负还是正。

因此,对于8位值,按位运算符考虑所有8位,因此工作在0..255范围内(而数学运算符可以将第一位视为符号指示符,因此工作在一个范围-128到+127)。

答案 2 :(得分:0)

无符号操作数没有任何特殊位用于符号表示。

对于带符号的操作数,符号表示的特殊位可能会中断我们想要执行的操作。