import java。util。*;
public class BitManipulation {
public static void main(String'' args) {
Random rand = new Random();
int i = rand。nextInt();
int j = rand。nextInt();
pBinInt(〃…1〃; …1);
pBinInt(〃+1〃; +1);
int maxpos = 2147483647;
pBinInt(〃maxpos〃; maxpos);
int maxneg = …2147483648;
pBinInt(〃maxneg〃; maxneg);
pBinInt(〃i〃; i);
pBinInt(〃~i〃; ~i);
pBinInt(〃…i〃; …i);
pBinInt(〃j〃; j);
pBinInt(〃i & j〃; i & j);
pBinInt(〃i | j〃; i | j);
pBinInt(〃i ^ j〃; i ^ j);
pBinInt(〃i 》 5〃; i 》》 5);
pBinInt(〃(~i) 》》 5〃; (~i) 》》 5);
pBinInt(〃i 》》》 5〃; i 》》》 5);
pBinInt(〃(~i) 》》》 5〃; (~i) 》》》 5);
long l = rand。nextLong();
long m = rand。nextLong();
pBinLong(〃…1L〃; …1L);
pBinLong(〃+1L〃; +1L);
69
…………………………………………………………Page 71……………………………………………………………
long ll = 9223372036854775807L;
pBinLong(〃maxpos〃; ll);
long lln = …9223372036854775808L;
pBinLong(〃maxneg〃; lln);
pBinLong(〃l〃; l);
pBinLong(〃~l〃; ~l);
pBinLong(〃…l〃; …l);
pBinLong(〃m〃; m);
pBinLong(〃l & m〃; l & m);
pBinLong(〃l | m〃; l | m);
pBinLong(〃l ^ m〃; l ^ m);
pBinLong(〃l 》 5〃; l 》》 5);
pBinLong(〃(~l) 》》 5〃; (~l) 》》 5);
pBinLong(〃l 》》》 5〃; l 》》》 5);
pBinLong(〃(~l) 》》》 5〃; (~l) 》》》 5);
}
static void pBinInt(String s; int i) {
System。out。println(
s + 〃; int: 〃 + i + 〃; binary: 〃);
System。out。print(〃 〃);
for(int j = 31; j 》=0; j……)
if(((1 =0; i……)
if(((1L 5; int: 1846303; binary:
00000000000111000010110000011111
(~i) 》》 5; int: …1846304; binary:
11111111111000111101001111100000
i 》》》 5; int: 1846303; binary:
00000000000111000010110000011111
(~i) 》》》 5; int: 132371424; binary:
00000111111000111101001111100000
数字的二进制形式表现为“有符号 2 的补值”。
3。1。9 三元 ifelse 运算符
这种运算符比较罕见,因为它有三个运算对象。但它确实属于运算符的一种,因为它最终也会生成一个值。
这与本章后一节要讲述的普通 if…else 语句是不同的。表达式采取下述形式:
布尔表达式 ? 值 0:值 1
若“布尔表达式”的结果为true,就计算“值0”,而且它的结果成为最终由运算符产生的值。但若“布尔
表达式”的结果为 false,计算的就是“值 1”,而且它的结果成为最终由运算符产生的值。
当然,也可以换用普通的if…else 语句(在后面介绍),但三元运算符更加简洁。尽管 C 引以为傲的就是它
是一种简练的语言,而且三元运算符的引入多半就是为了体现这种高效率的编程,但假若您打算频繁用它,
还是要先多作一些思量——它很容易就会产生可读性极差的代码。
可将条件运算符用于自己的“副作用”,或用于它生成的值。但通常都应将其用于值,因为那样做可将运算
符与 if…else 明确区别开。下面便是一个例子:
static int ternary(int i) {
return i 《 10 ? i * 100 : i * 10;
}
可以看出,假设用普通的if…else 结构写上述代码,代码量会比上面多出许多。如下所示:
static int alternative(int i) {
if (i 《 10)
71
…………………………………………………………Page 73……………………………………………………………
return i * 100;
return i * 10;
}
但第二种形式更易理解,而且不要求更多的录入。所以在挑选三元运算符时,请务必权衡一下利弊。
3。1。10 逗号运算符
在C 和C++里,逗号不仅作为函数自变量列表的分隔符使用,也作为进行后续计算的一个运算符使用。在
Java 里需要用到逗号的唯一场所就是for 循环,本章稍后会对此详加解释。
3。1。11 字串运算符+
这个运算符在Java 里有一项特殊用途:连接不同的字串。这一点已在前面的例子中展示过了。尽管与+的传
统意义不符,但用+来做这件事情仍然是非常自然的。在 C++里,这一功能看起来非常不错,所以引入了一?
小说推荐
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 其他
- 最新章:第26章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 其他
- 最新章:第309章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 其他
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 其他
- 最新章:第143章
- 神祗之眼 (正式版)第7卷(全文完)作者:百里芜虚
- 第五十一章离12月25日的圣诞节还有两天,纽约已经换上了节日的盛装,几天前的一场大雪令整个城市一片银白。人们笑逐颜开,都纷纷开始为节日做准备,商家为了在节日打开销路纷纷推出各种优惠促销手段,纽约的大街小巷全都这样热闹。依沙那被老婆打发出来买过节要用的杂货,而女儿则和凯妮一起到百货商场去买衣服去了。对
- 魔法玄幻
- 最新章:第23章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 其他
- 最新章:第27章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章