美文网首页
进制: 位移操作

进制: 位移操作

作者: 极光火狐狸 | 来源:发表于2018-09-27 14:28 被阅读14次

源码: shifting.py

# -.- coding:utf-8 -.-
from __future__ import print_function
import unittest


class TestShifting(unittest.TestCase):

    """
    位移操作:
        左移(增大):     <<
        右移(减小):     >>
    """

    def test_left_shifting_by_one(self):
        value = 1                                   # 00000001
        value <<= 1                                 # 00000010
        self.assertEqual(value, 2)

        binary_value = bin(value)                   # "0b10"
        self.assertEqual(binary_value, "0b10")

    def test_left_shifting_by_two(self):
        value = 1                                   # 00000001
        value <<= 2                                 # 00000100
        self.assertEqual(value, 4)

        binary_value = bin(value)                   # "0b100"
        self.assertEqual(binary_value, "0b100")

    def test_left_shifting_by_five(self):
        value = 1                                   # 00000001
        value <<= 5                                 # 00100000
        self.assertEqual(value, 32)

        binary_value = bin(value)                   # "0b100000"
        self.assertEqual(binary_value, "0b100000")

    def test_left_shifting_by_ten(self):
        value = 1                                   # 00000001
        value <<= 10                                # 00000100 00000000
        self.assertEqual(value, 1024)

        binary_value = bin(value)                   # "0b10000000000"
        self.assertEqual(binary_value, "0b10000000000")

    def test_right_shifting_can_not_less_than_zero(self):
        value = 1                                   # 00000001
        value >>= 10                                # 00000000
        self.assertEqual(value, 0)

        binary_value = bin(value)                   # "0b0"
        self.assertEqual(binary_value, "0b0")

    def test_right_shifting_by_one(self):
        value = 255                                 # 11111111
        value >>= 1                                 # 01111111
        self.assertEqual(value, 127)

        binary_value = bin(value)                   # "0b1111111"
        self.assertEqual(binary_value, "0b1111111")

    def test_right_shifting_by_two(self):
        value = 255                                 # 11111111
        value >>= 2                                 # 00111111
        self.assertEqual(value, 63)

        binary_value = bin(value)                   # "0b111111"
        self.assertEqual(binary_value, "0b111111")

    def test_right_shifting_by_five(self):
        value = 255                                 # 11111111
        value >>= 5                                 # 00000111
        self.assertEqual(value, 7)

        binary_value = bin(value)                   # "0b111"
        self.assertEqual(binary_value, "0b111")

 
 

测试: main.py

import unittest


TEST_MODULE = [
    "shifting",
]


if __name__ == '__main__':
    suite = unittest.defaultTestLoader.loadTestsFromNames(TEST_MODULE)
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

相关文章

  • 进制: 位移操作

    源码: shifting.py 测试: main.py

  • java位运算

    位运算符主要有3个:有符号右位移>>,有符号左位移<<,无符号右位移>>>,位运算的操作的对象是二进制的位,通过位...

  • 工具方法

    先说明一些用到的小知识,变化过程以代码说明。 左位移<<,右位移>>。 &0XFF操作。 很明显,-10二进制补码...

  • 编程小技巧,提高代码性能

    位移(<<、>>、>>>》)操作先来看看常见数的二进制表达(用8位数表达): PS:通常负数的二进制以补码(在原码...

  • >>、<<、>>>位移操作

    1、左移运算符<< <<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。 1.为正数情况 2.为负...

  • 位移操作

    基础: << : 左移运算符,num << 1,相当于num乘以2 >> : ...

  • java位移操作

    十进制、二进制 十进制数在计算机中的表示方法,对于正数和负数是不一样的。负数:绝对值对应的二进制,取反码,将反码加...

  • java位移操作

    用移位操作可以极大地提高性能,对于乘除2^n(n为正整数)的正整数计算,可以用移位操作来代替。 int num1 ...

  • iOS:按位操作符

    进制表示法: 按位操作符 向左移位运算符 << :对值进行向左移动,超出数据项的高位将丢失,低位移入的值总为0,该...

  • 位操作

    位操作详解 位运算的操作符有:&、|、^、~、>>、<<,六种,分别对应与,或,异或,按位取反,右位移,左位移 1...

网友评论

      本文标题:进制: 位移操作

      本文链接:https://www.haomeiwen.com/subject/ixyeoftx.html