(1)a的平方的相反数为-a2,a的相反数的平方为(-a)2,两式再相减即可;
(2)十位数字是a,个位数字是b的两位数表示为(10a+b),在和(a+b)相乘即可.
此题考查列代数式,注意题目蕴含的数量关系,正确用字母表示即可.
解析看不懂?免费查看同类题视频解析
位:二进制简称“位”,是二进制计数系统中表示小于 2 的整数符号,一般用 1 或 0 表示,是具有相等概率的两种状态中的一种。二进制的位数可表示一个机器字的字长,一个二进制位包含的信息量称为 1 bit。( 摘自百度百科)
位运算符用来对二进制位进行操作,Java中提供了如下所示的位运算符( 操作数只能为整型和字符型数据):
除 ~ 以外,其余均为二元运算符。
Java整型数据类型有:byte、char、short、int、long。要把它们转换成二进制的原码形式,必须明白他们各占几个字节。
tips: 全文使用的二进制为 32 位。
二进制的最高位为符号位,1 表示负数,0 表示整数,其余位表示数的绝对值。
123 转为二进制补齐后为:00 ,这是 123 的原码。
反码:正数的反码和原码相同,负数的反码为原码除最高位外取反(0 变 1,1 变 0)。
补码:正数的补码和原码相同,负数的补码为原码除最高位外取反 +1。
最高位如果是 1 的话(负数),那么除了最高位之外的取反,然后加 1 得到原码。
最高位如果是 0 的话(正数), 不变,正数的补码就是它的原码。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。(摘自百度百科)
打个比方:2-1是怎么计算的?
结果 0 ,最高位溢出(0)丢弃, 2-1 = 1。
关于原码、反码和补码的详细解释,可看这篇:
&:如果相对应位都是 1,则结果为 1,否则为 0。
如何得到 12 的呢?
60 的补码为:(省略了前面三组 )
13 的补码为:(省略了前面三组 )
按位与后值为:(省略了前面三组 )
将其转换为十进制:12
在 boolean 类型的值上用法也如下:
|:如果相对应位都是 0,则结果为 0,否则为 1。
60 的补码为:(省略了前面三组 )
13 的补码为:(省略了前面三组 )
按位或后值为:(省略了前面三组 )
将其转换为十进制:61
在 boolean 类型的值上用法也如下:
^:如果相对应位值相同,则结果为 0,否则为 1。
60 的补码为:(省略了前面三组 )
13 的补码为:(省略了前面三组 )
按位异或后值为:(省略了前面三组 )
将其转换为十进制:49
在 boolean 类型的值上用法也如下:
~:按位取反运算符翻转操作数的每一位,即 0 变成 1 ,1 变成 0。
60 的补码为:(省略了前面三组 )
按位取反后值为:(省略了前面三组 )
将其转换为十进制:-61
<<:按位左移运算符。左操作数按位左移右操作数指定的位数(在低位补 0)。
60 的补码为:(省略了前面三组 )
按位左移 2 位后为:(省略了前面三组 )
转换为十进制为:240
左移运算符,num << 1,相当于 num 乘以 2(每左移一位就相当于乘以一个 2)。
>>:按位右移运算符。左操作数按位右移右操作数指定的位数(如果该数为正数,则高位补 0 ,若为负数,则高位补 1)。
60 的补码为:(省略了前面三组 )
按位右移 2 位后值为:(省略了前面三组 )
右移运算符,num >> 1,相当于 num 除以 2(每右移一位相当于除以一个 2)。
>>:按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充(忽略符号位)。
正数 >>> 的结果和 >> 一样,负数则天差地别,故下面例子为负数:
-2 的补码为:(省略了前面三组 )
右移 1 位之后,最后一个 0 被覆盖掉,符号位空了一位(下划线_处),按照规则,忽略符号位补零,那么第一位(符号位)就是 0 了。
转换成十进制数为: 。
由于数据类型所占字节是有限的,而位移的大小却可以任意大小,所以可能存在位移后超过了该数据类型的表示范围,于是有了这样的规定:
如果为int数据类型,且位移位数大于32位,则首先把位移位数对32取模,不然位移超过总位数没意义的。所以4>>32与4>>0是等价的。
如果为long类型,且位移位数大于64位,则首先把位移位数对64取模,若没超过64位则不用对位数取模。
如果为byte、char、short,则会首先将他们扩充到32位,然后的规则就按照int类型来处理。
位运算到底有什么用途或者有哪些场景可以应用到它?
因为位运算的运算效率比直接对数字进行加减乘除高很多,所以当出现以下情景且对运算效率要求较高时,可以考虑使用位运算。(源码用位运算)
不过实际工作中,很少用到它,我也不知道为什么很少有人用它,我想应该是它比较晦涩难懂,如果用它来进行一些运算,估计编写的代码可读性会不强,毕竟我们写的代码不仅仅留给自己一个人看。
2. 求平均值,比如有两个 int 类型变量 x、y,首先要求 x+y 的和,再除以 2,但是有可能 x+y 的结果会超过 int 的最大表示范围,所以位运算就派上用场啦。
3. 对于一个大于 0 的整数,判断它是不是2的几次方
4. 比如有两个 int 类型变量 x、y,要求两者数字交换,位运算的实现方法:性能绝对高效
6. 取模运算,采用位运算实现:
等等,当然还有牛人使用位运算来实现权限控制,加密技术,里面的奥秘深不可测啊!
共回答了18个问题采纳率:94.4%
0没有相反数,所以A只有1才符合条件
B,最大负整数为-1,绝对值为1.以上