理解按位计算

时间:2016-06-24 15:40:11

标签: c bit-manipulation

我正在阅读一些代码,这些代码对int执行按位运算并将它们存储在数组中。我已经计算出每个步骤的二进制表示,并将其包含在代码旁边。

在另一台计算机上,数组buff作为消息接收并以十六进制显示为[42,56,da,1,0,0]

为什么问题是,你怎么能从十六进制数中找出原始数字是什么。我知道4256是等效于'B''V'的ASCII。但是,您如何从423 da '1' '0'获取号码'0'

由于

2 个答案:

答案 0 :(得分:5)

DA 01 00 000x000001DA0x1DA的小端表示。反过来,这是256 + 13 * 16 + 10 = 474.也许您有这个号码并且稍后更改了程序并忘了重新编译?

从另一边看,423是0x1a7 ......

答案 1 :(得分:3)

正如glgl所说它应该是a7,你可以看到它来自哪里

  buff[2] = reading&0xff; // 10100111            = 0xa7
  buff[3] = (reading>>8)&0xff; //00000001        = 1
  buff[4] = (reading>>16)&0xff; //00000000       = 0
  buff[5] = (reading>>24)&0xff; ////00000000     = 0