码迷,mamicode.com
首页 > 编程语言 > 详细

python邂逅——符号运算(一)

时间:2018-05-05 16:48:40      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:二进制   转换   amp   相同   逻辑取反   补码   进制   逻辑   不同   

1、布尔运算符

  共三个

  not

  逻辑取反  eg:not 1  return false

  and

  优先返回假值的对象  eg:1 and 0  return 0  12 and 100  return 12  

  or

  优先返回真值对象  eg:1 or 2  return 1  0 or 20  return20

 

2、位运算

  &  |  ^  <<  >>  ~

  &:位与运算

  输入相同值则返回相同值,不同则返回0

  eg:7 & 7  return 7  8 & 9  return 0

  |:位或运算

  输入有真值则返回真值,输入两个假值则返回0

  eg:2 | 3  return 2  0 | 0  return 0

  ^:位异或

  相同为0,不同为1

  eg:2 ^ 3  return 1  2 ^ 2  return 0

  <<:左移

  将数化为二进制数后向左移位,低位则补0

  x << y  即将x化为二进制数后向左移y位

  eg:2 << 3  return 16

  >>:右移

  将数化为二进制数后向右移位,低位则丢弃

  x >>y  即将x化为二进制数后向右移y位

  eg:2 >> 1  return 1

  ~:按位取反

  了解按位取反之前需要知道一下知识点

  (1)取反操作是在原码上进行的!

  (2)在计算机里面,数是以补码存储的,但是转换成其他进制需原码

  (3)原码求补码:取反,+1

  (4)补码求原码:取反,+1

  (5)正数的补码即源码,负数的补码则为其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1

 

  当输入为正数时,求其补码(即其原码),再取反,再求原码,即可得到取反后的数(符号带上)

  eg:~5

    5的补码为0000 0101  取反得1111 1010,可见取反后数为一个负数(二进制最高位表示符号,1为负,0为正),然后求其原码得0000 0110,再转换成十进制得数为-6

  当输入为负数时,求其补码(即该数的正数取反后+1),再取反,再求源码,即可得到取反后的数(符号带上)

  eg:~-6

    -6的补码为6的原码取反后+1,6原码为0000 0110,取反+1后得-6补码为1111 1010,再取反得0000 0101,可见起取反后是一个正数,然后求其原码得0000 0101,再转换成十进制得数5

  

python邂逅——符号运算(一)

标签:二进制   转换   amp   相同   逻辑取反   补码   进制   逻辑   不同   

原文地址:https://www.cnblogs.com/shiqyka/p/8994948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!