A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. public class OperateDemo3 {
  2.         public static void main(String[] args) {
  3.                 int num=26;
  4.                 int n1=num&15;
  5.                 System.out.println(n1>9?(char)(n1-10+'A'):n1);
  6.         }
  7. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

8 个回复

倒序浏览
n1 = num&15  n1的值为10
10>9
所以执行(n1-10+'A')
回复 使用道具 举报
26&15等于10,‘A’的ASCII值就是65啊,怎么会是15呢
回复 使用道具 举报
dreamseekerkun 发表于 2014-10-11 13:44
26&15等于10,‘A’的ASCII值就是65啊,怎么会是15呢

额,原来如此,多谢,那怎么算出A的ASCII呢?
回复 使用道具 举报
首先26转化为二进制数是00011010 , 15转化为二进制数是00001111,
两个数做&操作,结果为00001010,把结果转化为二进制数是10,即n1为10.
因为10>9所以三元运算取前面的值,即(10-10+'A'),又因字符A转化为数字是65,
即结果为65.

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
字母A对应的ASSCII值可以在对就的ASSCII码表中找到。
回复 使用道具 举报
20140829 发表于 2014-10-11 13:49
额,原来如此,多谢,那怎么算出A的ASCII呢?

ASCII是直接定义好的,打印字符A时转换成int型就是了
回复 使用道具 举报
atlas 发表于 2014-10-11 13:56
首先26转化为二进制数是00011010 , 15转化为二进制数是00001111,
两个数做&操作,结果为00001010,把结果 ...

ASCll直接定义好的,不用算是吧?那不得把表记住啊
回复 使用道具 举报
atlas 中级黑马 2014-10-11 15:02:09
9#
20140829 发表于 2014-10-11 14:48
ASCll直接定义好的,不用算是吧?那不得把表记住啊

不用全记住,只记住一些常用的比如A=65,a=97。如果你要推算C=?,只需65+(A到C的距离)2=67即可。
a=A+32,其他一些不常用的不用记。
你以后慢慢就知道了,一般只会出现大小写字母的ASCII的值,其他的基本不出现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马