「java数值移位」java 位移
今天给各位分享java数值移位的知识,其中也会对java 位移进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java int怎么位移取前几位数字
- 2、请教JAVA的移位运算符的方法
- 3、JAVA的移位运算
- 4、java移位运算的一些基本概念问题,求解释?
- 5、java移位运算的几道题
- 6、求助~ java 整数移位问题
java int怎么位移取前几位数字
首先,java里int是有32位2进制数组成的
我们一般赋值 int i = 1; 这个是赋值10进制的数
赋值 2进制要 int i = 01;(前面加个0,就表示是2进制数)
赋值16进制(常用) int i = 0x00000001; (0x表示为16进制数)
3种的值都是1.
要用2进制输出就是Integer.toBinaryString(i)
拓展:
因为计算机处理位运算速度是非常快的(应该是最快的运算)
所以很多时候,如果有一堆boolean变量需要表示时, 一般只用1个int的数表示,如:
int i = 0x0000000f;//表示后4位为1
int m = (i 2) 1; // 其中m就是表示某一位的值,2表示右边开始数第2位(当然是从第0位开始算的)
这样就能取具体每一位的值
这种方法在很吃代码效率的程序中经常遇到
全手打,望支持
请教JAVA的移位运算符的方法
11010011 1
表示所有位居向前移一位,原有的符号保留,如果是正数还是正数,负数还是复数。位移以后的数为:10100110,由于在向前移的过程中,原来的第一位超出了范围,所以将被舍弃,原来的最后一位向前移以后,不足的位数用0填充。
11010011 1
移完以后的结果为01101001.每个位上的数字均向右移一位,不足的位用0填充,原来最后一位1将被舍弃。
而 和 都表示无符号位移,-11010011 将按照和的规则进行位移,但是无论是 还是 ,都表示得出的最终结果是没有符号的,也就是这样位移出来的结果都是正数。;利用这个特性,在一些需要取随机正整数的地方或者其他需要忽略符号以及需要将负数通过位移变为正数的计算中,可以利用这个特性方便快捷的得出计算结果。
简单的讲,表示2的整数倍的乘积计算。比如,1 3 = 1 * (2 * 2 * 2) = 8 , 1 1 * (2 * 2 * 2 * 2) = 16,
表示2的整数倍的除运算
16 4 = 16 / (2 * 2 * 2 * 2) = 1,
16 3 = 16 / (2 * 2 * 2) = 2,
16 2 = 16 / (2 * 2) = 4,
16 1 = 16 / (2) = 8,
但是大部分的数字都不是2的整数倍的,比如17在位移的时候,得出的结果与16是一样的,因为位移的结果没有小数,即使是8.999999,也将被取整为8.
最终结果(楼主没有说明位移几位,例子就以位移一位和2位为主)
11010011 1 10100110
11010011 2 01001100
-11010011 1 -10100110
-11010011 2 -01001100
11010011 1 01101001
11010011 2 00110100
-11010011 1 -01101001
-11010011 2 -00110100
11010011 1 10100110
11010011 2 01001100
-11010011 1 10100110
-11010011 2 01001100
11010011 1 01101001
11010011 2 00110100
-11010011 1 01101001
-11010011 2 00110100
JAVA的移位运算
全错。
在java中,对byte型进行位移操作,那么在移位进行之前,它们会自动转换成一个int,得到的结果也是int
第一题-17:11111111
11111111
11111111
11101111
(无符号右移2位)后为
00111111
11111111
11111111
11111011
=
1073741819
同上
第二题为:00011111
11111111
11111111
11111010
第三题为0
java移位运算的一些基本概念问题,求解释?
首先 第一个问题-1的二进制表示并不是1111 1111而是1000 0001 ,最高位是(最左边的一位)符号位,最高位为0表示是正数,1表示是负数
第二个问题是指整个数往左边移
例如:3 2(3为int型)
1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,
2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,
3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,
转换为十进制是12。
同理,表示右移.
最后一个问题int val=-1 算术右移 不改变符号往右移 逻辑右移 并不能保证不改变符号 至于结果我试了一下并不相等。
java移位运算的几道题
数在计算机中是以补码表示的。。
因此10就表示为00001010 (假设是8个bit) 而-10 就是11110110
java中 int占4个字节(32位),long占8个字节。。
如果对int进行移位操作的话,移的位数是n%32,就是说100 和4的结果是一样的(这个我没测过,书上写的); long类型的应该也是类似的。。记得有一个c语言面试题,如何快速计算出2*8等於多少,就是用23,计算机只是2进制的,所以就进行移位计算机立即得到数值
byte 8位,,也就是说它表示的范围是-128~127,而255 应该是两个字节才能表示再来,也就是 00000000 11111111,对它进行强转,好像是截断取低位,取8个1,由於是补码转换成十进制也就是-1
ps:至於-1为什麽用11111111表示,呵呵 负数的补码是它的绝对值(的补码)取反再加1。。正数的反码和补码都是其本身,1的原码(补码)是00000001,取反11111110 再加1 得11111111。
以上如果有错。。那就是我记错了。。。
如果正解就给分哈。。。这个问题以前也困扰了我好多天。。
求助~ java 整数移位问题
int 类型的整数是32位的,左移或右移32位或32的倍数,数值不变。所以左移33位,相当于左移1位。
long类型的整数是64位的,左移或右移64位或64位的倍数,数值不变。
关于java数值移位和java 位移的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-08,除非注明,否则均为
原创文章,转载请注明出处。