<<
>>
>>>
我知道这几个是以二进制来位移的
但是出现带符号的。我有点乱。
有人会的话请帖上对比的二进制格式的。
不知道的请不要盖楼。
讲的好的我加分。
>>
>>>
我知道这几个是以二进制来位移的
但是出现带符号的。我有点乱。
有人会的话请帖上对比的二进制格式的。
不知道的请不要盖楼。
讲的好的我加分。
解决方案 »
- js方法参数传递字符串
- java操作数据库异常 “该语句没有返回 ResultSet”
- 返回的实现
- struts2+hibernate3.3+spring3.1注入报空指针
- STRUTS中如何解决乱码问题
- 如何彻底解决JBuilder9中光标位置和实际位置不符的问题
- 请各位大虾指点指点!:基于J2EE平台实现一个WebServices实例的毕业设计
- dbcp环境中输出sql操作日志(刚才的帖子写错了,麻烦版主删除,谢谢)
- Eclipse!!Eclipse!!Eclipse!!我受够了,我要暴发!
- jbuilder的困惑 郁闷啊
- 更新语句错了么?
- 学完SE新手很迷茫,不知如何继续学EE了。EE该如何学呢
output("123", 123);
output("123 << 2", 123 << 2); System.out.println("\n按位有符号右移");
output("123", 123);
output("123 >> 2", 123 >> 2); System.out.println("\n按位有符号右移,右移时高位补充符号位");
output("-123", -123);
output("-123 >> 2", -123 >> 2); System.out.println("\n按位无符号右移");
output("123", 123);
output("123 >>> 2", 123 >>> 2); System.out.println("\n按位无符号右移,右移时高位补 0");
output("-123", -123);
output("-123 >>> 2", -123 >>> 2);
} private static void output(String prompt, int result) {
System.out.printf("%10s = %-10d %s%n", prompt, result, toBit(result));
} public static String toBit(int num) {
char[] chs = new char[39];
for (int i = 0, k = 0; i < Integer.SIZE; i++) {
chs[k++] = (char)('0'+ ((num >>> Integer.SIZE - i - 1) & 1));
if ((i & 3) == 3 && k < chs.length) {
chs[k++] = ' ';
}
}
return new String(chs);
}
}
按位左移
123 = 123 0000 0000 0000 0000 0000 0000 0111 1011
123 << 2 = 492 0000 0000 0000 0000 0000 0001 1110 1100按位有符号右移
123 = 123 0000 0000 0000 0000 0000 0000 0111 1011
123 >> 2 = 30 0000 0000 0000 0000 0000 0000 0001 1110按位有符号右移,右移时高位补充符号位
-123 = -123 1111 1111 1111 1111 1111 1111 1000 0101
-123 >> 2 = -31 1111 1111 1111 1111 1111 1111 1110 0001按位无符号右移
123 = 123 0000 0000 0000 0000 0000 0000 0111 1011
123 >>> 2 = 30 0000 0000 0000 0000 0000 0000 0001 1110按位无符号右移,右移时高位补 0
-123 = -123 1111 1111 1111 1111 1111 1111 1000 0101
-123 >>> 2 = 1073741793 0011 1111 1111 1111 1111 1111 1110 0001
2:再将各位取反(0 变 1,1 变 0):1111 1111 1111 1111 1111 1111 1111 1110
3:再加上 1 即是 -1 的 32 位补码:1111 1111 1111 1111 1111 1111 1111 1111
非常感谢。
呵呵。逮到个大牛就多问问把。
在java中:
char c='中';//编译、运行都正确 因为char是2个字节的,中文字符是两个字节的,所以正确
char c='ab';//这里为什么编译就出错了?不是说英文是1个字节的吗?
‘中’是一个字符,在unicode编码占两个字节。
‘a’ 是一个字符,在unicode编码占一个字节。
‘ab’ 是两个字符了,是字符串,不可以。 因为char只能是单字符。