读书人

在程序里常常看到一个数与0xff相与 这

发布时间: 2013-10-24 18:27:24 作者: rapoo

在程序里经常看到一个数与0xff相与 这是要干嘛?
程序中药处理大量的二进制数据
经常看到有一个数与0xff相与的操作
但是与0xff与,不就是这个数自己吗
为什么要与一次? 是要得到这个数的前八位吗?
[解决办法]
取这个数低8位的值。

引用:
程序中药处理大量的二进制数据
经常看到有一个数与0xff相与的操作
但是与0xff与,不就是这个数自己吗
为什么要与一次? 是要得到这个数的前八位吗?

[解决办法]
是要取低八位。。。
[解决办法]
引用:
Quote: 引用:

取这个数低8位的值。

Quote: 引用:

程序中药处理大量的二进制数据
经常看到有一个数与0xff相与的操作
但是与0xff与,不就是这个数自己吗
为什么要与一次? 是要得到这个数的前八位吗?


还有这样的操作
bFail = !!strcmp(strBuffer, INFO);

两次取反干嘛 strcmp本身不就能返回一个值用来判断了吗

这个是在什么地方看到的?
[解决办法]
引用:
Quote: 引用:

取这个数低8位的值。

Quote: 引用:

程序中药处理大量的二进制数据
经常看到有一个数与0xff相与的操作
但是与0xff与,不就是这个数自己吗
为什么要与一次? 是要得到这个数的前八位吗?


还有这样的操作
bFail = !!strcmp(strBuffer, INFO);

两次取反干嘛 strcmp本身不就能返回一个值用来判断了吗

想起来了,在代码里两次取反是为了这样,假如有a=!!a,
对于a为0,两次取反还是0;
但是如果a非零,两次取反则会变成1,主要作用就在这,希望对你有用

[解决办法]
两次取反的意思是把数值转为布尔型。

引用:
Quote: 引用:

取这个数低8位的值。

Quote: 引用:

程序中药处理大量的二进制数据
经常看到有一个数与0xff相与的操作
但是与0xff与,不就是这个数自己吗
为什么要与一次? 是要得到这个数的前八位吗?


还有这样的操作
bFail = !!strcmp(strBuffer, INFO);

两次取反干嘛 strcmp本身不就能返回一个值用来判断了吗

[解决办法]
引用:
程序中药处理大量的二进制数据
经常看到有一个数与0xff相与的操作
但是与0xff与,不就是这个数自己吗
为什么要与一次? 是要得到这个数的前八位吗?

去掉高位数,只保留最低8位
[解决办法]
取反两次是将将一个值变成TRUE(1)或者FALSE(0)。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

取这个数低8位的值。

Quote: 引用:

程序中药处理大量的二进制数据
经常看到有一个数与0xff相与的操作
但是与0xff与,不就是这个数自己吗
为什么要与一次? 是要得到这个数的前八位吗?


还有这样的操作
bFail = !!strcmp(strBuffer, INFO);

两次取反干嘛 strcmp本身不就能返回一个值用来判断了吗

想起来了,在代码里两次取反是为了这样,假如有a=!!a,
对于a为0,两次取反还是0;
但是如果a非零,两次取反则会变成1,主要作用就在这,希望对你有用

可是想strcmp这样的函数 返回值要么0 要么1或-1的 取反两次 干嘛呢?

取两次反之后就只能是0和1了,成bool型了,不会出现-1

读书人网 >C++

热点推荐