神奇的位运算

一. 英文字母大小写转换

  1. 利用或操作 | 和空格将英文字符转换为小写。
    ('a' | ' ') = 'a'
    ('A' | ' ') = 'a'

  2. 利用与操作 & 和下划线将英文字符转换为大写。
    ('b' & '') = 'B'
    ('B' & '
    ') = 'B'

  3. 利用异或操作 ^ 和空格进行英文字符大小写互换。
    ('d' ^ ' ') = 'D'
    ('D' ^ ' ') = 'd'

二. 异或交换两个数
int a = 1, b = 2;
a ^= b;
b ^= a;
a ^= b;
此时a = 2,b=1

三. 判断奇偶数
只要根据数的最后一位是 0 还是 1 来决定即可,为 0 就是偶数,为 1 就是奇数
if(0 == (a & 1)) {
//偶数
}

四. 符号交换
交换符号将正数变成负数,负数变成正数
int reversal(int a) {
return ~a + 1;
}
整数取反加1,正好变成其对应的负数(补码表示);负数取反加一,则变为其原码,即正数

五. 求绝对值
整数的绝对值是其本身,负数的绝对值正好可以对其进行取反加一求得,即我们首先判断其符号位(整数右移 31 位得到 ),然后根据符号进行相应的操作int。
int abs(int a) {
int i = a >> 31;
return i == 0 ? a : (~a + 1);
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据的表示和运算 一、数值和编码 1.基本概念 ①进位制:表示数时,仅用一位数码往往不够用,必须用进位计数的方法组...
    我可能是个假开发阅读 9,982评论 1 1
  • 一、进制 1.什么是进制 是一种计数的方式,数值的表示形式数一下方块的个数方块个数 汉字:十一 十进制:11 ...
    Andy_Livings阅读 4,223评论 0 0
  • 01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例计算机(Compute...
    冰川_阅读 2,144评论 0 1
  • [TOC] 基础概念 位 也称比特,记为bit(binary digit的缩写)或小写b 这是最小的信息单位,是用...
    hylexus阅读 2,801评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 127,038评论 2 7