9
回答
关于 java 位移 、与 的疑惑
【腾讯云】学生服务器套餐10元/月 >>>   

s是一个字符串 ,现在 将s中的字符位移,然后写入到 OutputStream 中

 

public final void writeChars(String s, OutputStream out) {
 int len = s.length();
 for (int i = 0; i < len; i++) {
	int v = s.charAt(i);

	out.write((v >>> 0) & 0xFF);(1)
	out.write((v >>> 8) & 0xFF);(2)

 }
}

请问(1)(2) 是什么意思的?

另外(1)中 ,字符根本就没有动,有何意义?

 

 

JDK
举报
HostSugar
发帖于8年前 9回/436阅
共有9个答案 最后回答: 8年前

>>> 是向右移位,并赋值,纠正为:带符号移位

v >>> 8 就等于 v = v >> 8 纠正为:带符号移位

而 v >>> 0 这样的写法尽管没有实际的效果,但有时候是为了代码更加直观。

引用来自“红薯”的帖子

>>> 是向右移位,并赋值

v >>> 8 就等于 v = v >> 8

而 v >>> 0 这样的写法尽管没有实际的效果,但有时候是为了代码更加直观。

0xFF 这个主要作用是什么?

按位进行”与“操作,相当于只取前面的8位,也就是把高8位的全部置0

不会现在学校里不讲这些东西了吗?数字电路里应该都要学的吧

引用来自“红薯”的帖子

按位进行”与“操作,相当于只取前面的8位,也就是把高8位的全部置0

不会现在学校里不讲这些东西了吗?数字电路里应该都要学的吧

呵呵,基本上还给老师了~~

引用来自“红薯”的帖子

>>> 是向右移位,并赋值

v >>> 8 就等于 v = v >> 8

而 v >>> 0 这样的写法尽管没有实际的效果,但有时候是为了代码更加直观。

红薯大哥错了,v>>>8表示带符号右移,不是右移并赋值

引用来自“DarkLee”的帖子

引用来自“红薯”的帖子

>>> 是向右移位,并赋值

v >>> 8 就等于 v = v >> 8

而 v >>> 0 这样的写法尽管没有实际的效果,但有时候是为了代码更加直观。

红薯大哥错了,v>>>8表示带符号右移,不是右移并赋值

哈哈,看来是我全还给老师了,丢人了!。

~ 按位非(NOT)(一元运算) 
& 按位与(AND) 
| 按 位或(OR) 
^ 按位异或(XOR) 
>> 右移 
>>> 右移,左边空出的位以0填 充 
运算符 结果 
<< 左移 
&= 按位与赋值 
|= 按位或赋值 
^= 按 位异或赋值 
>>= 右移赋值 
>>>= 右移赋值,左边空出的位以0填充 
<<= 左 移赋值 

引用来自“红薯”的帖子

引用来自“DarkLee”的帖子

引用来自“红薯”的帖子

>>> 是向右移位,并赋值

v >>> 8 就等于 v = v >> 8

而 v >>> 0 这样的写法尽管没有实际的效果,但有时候是为了代码更加直观。

红薯大哥错了,v>>>8表示带符号右移,不是右移并赋值

哈哈,看来是我全还给老师了,丢人了!。

老大真绿色环保啊,不用的还记得还给老师,俺都是直接丢了.

顶部