| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++ 学习小笔记 -> 正文阅读 |
|
[C++知识库]C++ 学习小笔记 |
一、常识 1)C语言中规定数组名称,代表数组所在内存位置的首地址; 2)C语言中没有真正的字符串类型,可以通过字符数组表示字符串,因为它的元素地址是连续的,这就足够了,可以使用string引用 二、 运算符 1.如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300% x = x * 2; 2.如果除上一个 2 的倍数数值,可以改用右移运算加速 350% x = x / 2; x = x >> 1;// 2 = 21 3.?数值转整数加速 10% x = int(1.232) x = 1.232 >> 0; 4.?交换两个数值(swap),使用 XOR 可以加速20% t= a; if (a == b) return; 5.?正负号转换,可以加入 300% i = -i; 正数按位取反,需要先求其反数,若前面符号为1,再次对其取反并结果+1 ,最后结果为负值? 6.?取余数,如果除数为 2 的倍数,可利用 AND 运算加速 600% x = 131 % 4; 7.?利用 AND 运算检查整数是否为 2 的倍数,可以加速 600% isEven = (i % 2) == 0; 8.?加速 Math.abs 600% 的写法1,写法2 又比写法1加速 20% //写法1 //写法2 i = (x ^ (x >> 31)) - (x >> 31); //写法3 i=x^(~(x>>31)+1)+(x>>31); 9.?比较两数值相乘之后是否拥有相同的符号,加速 35% eqSign = a * b > 0; C语言的位运算在实际操作中用途(转载)1.?如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300% x = x * 2; 2.?如果除上一个 2 的倍数数值,可以改用右移运算加速 350% x = x / 2; x = x >> 1;// 2 = 21 3.?数值转整数加速 10% x = int(1.232) x = 1.232 >> 0; 4.?交换两个数值(swap),使用 XOR 可以加速20% t= a; 5.?正负号转换,可以加入 300% i = -i; 6.?取余数,如果除数为 2 的倍数,可利用 AND 运算加速 600% x = 131 % 4; 7.?利用 AND 运算检查整数是否为 2 的倍数,可以加速 600% isEven = (i % 2) == 0; 8.?加速 Math.abs 600% 的写法1,写法2 又比写法1加速 20% //写法1 //写法2 i = (x ^ (x >> 31)) - (x >> 31); //写法3 i=x^(~(x>>31)+1)+(x>>31); 9.?比较两数值相乘之后是否拥有相同的符号,加速 35% eqSign = a * b > 0; 其它位运算技巧 var 24bitColor:uint = 0xff00cc; 2. RGB?色彩合并 var r:uint = 0xff; c语言位操作1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 ? 例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。 应用: a. 清零特定位 (mask中特定位置0,其它位为1,s=s&mask) b. 取某数中指定位 (mask中特定位置1,其它位为0,s=s&mask) 2. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。 例如:9|5可写算式如下: 00001001|00000101 00001101 (十进制为13)可见9|5=13 应用: 常用来将源操作数某些位置1,其它位不变。 (mask中特定位置1,其它位为0 s=s|mask) 3. 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) 应用: a. 使特定位的值取反 (mask中特定位置1,其它位为0 s=s^mask) b. 不引入第三变量,交换两个变量的值 (设 a=a1,b=b1) 目 标 操 作 操作后状态 a=a1^b1 a=a^b a=a1^b1,b=b1 b=a1^b1^b1 b=a^b a=a1^b1,b=a1 a=b1^a1^a1 a=a^b a=b1,b=a1 4. 求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110 5. 左移运算 左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数, 高位丢弃,低位补0。 其值相当于乘2。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。 6. 右移运算 右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。其值相当于除2。 例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。移入0的叫逻辑右移,移入1的叫算术右移,Turbo C采用逻辑右移。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 11:58:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |