为了账号安全,请及时绑定邮箱和手机立即绑定

与0xff进行按位于操作,是怎么做到清零的?

右移动24位,导致高24为全是0 再进行按位于操作,不还是原来那个数吗?怎么就清零了呢?http://img1.sycdn.imooc.com//5a16718800018ee308350234.jpg

正在回答

4 回答

 writeInt()方法中的源码  每次读取字节信息 都是经过了一次无符号右移和位与操作。 而老师在写入一个字节的时候并没有写位与操作。 因此其实写不写都可以 因为每次读取的信息都是低八位。 但是源码中的位与操作 确实做到了“清零”。 这个清零意思指的是 将前面24高位均置为0.

举负数说明:  11111111   11111111   11101000 11110111  

右移24位  00000000   00000000   00000000   11111111   位与0xff 后 结果 为0xff  读取 0xff

右移16位 00000000   00000000   11111111   11111111   位与0xff后   结果为  0xff   读取 0xff

右移8位  00000000   11111111   11111111    11101000  位与0xff后   结果为  0xe8   读取0xe8

右移0位   11111111    11111111   11101000   11110111  位与0xff后   结果为0xf7   读取0xf7

看资料说 读取字节信息 进行位与0xff操作 是为了保证二进制数据的一致性。  这样传输的二进制信息是安全的。


0 回复 有任何疑惑可以回复我~

位于不就是对应相乘吗

0 回复 有任何疑惑可以回复我~

一次就读8个bit啊,所以清零了你也不用读。就算不清零你也读不到

0 回复 有任何疑惑可以回复我~

一次就读8个bit啊,所以清零了你也不用读。就算不清零你也读不到

0 回复 有任何疑惑可以回复我~
#1

织梦_ 提问者

答非所问
2017-11-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

与0xff进行按位于操作,是怎么做到清零的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信