Java Bit Set setBitsInLong(long l, int n, int k, long v)

Here you can find the source of setBitsInLong(long l, int n, int k, long v)

Description

Return a 'long' value with k bits starting at bit n assigned according to v I.e.

License

Open Source License

Parameter

Parameter Description
l is the long value to be manipulated
n is the starting position
k is the number of bits to set
v is the value according to which the bits are set

Return

the resulting long value

Declaration

public static long setBitsInLong(long l, int n, int k, long v) 

Method Source Code

//package com.java2s;
/*//from   ww  w.  ja v  a2 s.  c om
 * Copyright Ericsson AB 2011-2014. All Rights Reserved.
 *
 * The contents of this file are subject to the Lesser GNU Public License,
 *  (the "License"), either version 2.1 of the License, or
 * (at your option) any later version.; you may not use this file except in
 * compliance with the License. You should have received a copy of the
 * License along with this software. If not, it can be
 * retrieved online at https://www.gnu.org/licenses/lgpl.html. Moreover
 * it could also be requested from Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 * BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 * WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
 * EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
 * OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND,
    
 * EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
 * LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE,
 * YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 *
 * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 * WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 * REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
 * DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
 * DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY
 * (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
 * INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE
 * OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
 * HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 */

public class Main {
    /**
     * Return a 'long' value with k bits starting at bit n assigned according to
     * v I.e. bits from n to n+k of 'i' are set according to 'v'. So if v=1010
     * and k=4, bits from n to n+4 of 'i' are set to 1010. Note that the
     * argument 'v' must be a long, since it is shifted by 'n', the maximum
     * value for which is 63.
     *
     * @param l is the long value to be manipulated
     * @param n is the starting position
     * @param k is the number of bits to set
     * @param v is the value according to which the bits are set
     * @return the resulting long value
     */
    public static long setBitsInLong(long l, int n, int k, long v) {
        long temp = ~(~0L << k);
        long temp2 = ~(temp << n);
        long temp3 = l & temp2;
        return temp3 | (v << n);
    }
}

Related

  1. setBits(final byte value, final int bitMask, final boolean val)
  2. setBits(int lowBit, int numBits)
  3. setBits(int value, int bits)
  4. setBits(long value, long bits)
  5. setBitsFromLong(byte[] dst, long dstoff, long l, int off, int len)
  6. setBitTo0(final long word, final int idx)
  7. setBitValue(byte aByte, int bitIndex, int bitValue)
  8. setBitValueAt(int destination, int value, int index)
  9. setBitWidth(int bw)