c++
文章平均质量分 70
小姚同志
这个作者很懒,什么都没留下…
展开
-
多大范围内的整数可以用浮点数精确表示
转载自https://airguanz.github.io/2019/11/20/float-to-int-exact-range.html我们知道,IEEE 754中的浮点数是对实数的近似表示,其取值密度在越远离0的地方越稀疏。那么,究竟在多远处浮点数会无法精确地cast到整数呢?本文对此进行了实验和分析。实验代码很简单:int main(){ for(int i = 0; i < std::numeric_limits<int>::max(); ++..转载 2022-02-27 21:23:31 · 1589 阅读 · 0 评论 -
utf-8的中文汉字
从字符编码讲起。1、美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0;2、后来欧洲人发现尼玛你这128位哪够用,比如我高贵的法国人字母上面的还有注音符,这个怎么区分,得,把高1位编进来吧,这样欧洲普遍使用一个全字节进行编码,最多可表示256位。欧美人就是喜欢直来直去,字符少,编码用得位数少;3、但是即使位数少,不同国家地区用不同的字符编码,虽然0--127表示的符号是一样的,但是128--255这一段的解释完全乱套了,即使...原创 2020-10-28 16:57:04 · 2829 阅读 · 0 评论 -
关于C++ std::is_class 模板类是如何实现的,摘自stackoverflow上一个比较好的解释
总结下来,要理解这个问题主要是需要理解这3个概念:1. SFINAE,"Substitution failure is not an error".这个在c++模板泛型元编程偏特化中有大量用到。2. template <class T> char test(int T::*); 形如int T::*的这个表达式是什么意思. It is called a Memb...原创 2019-12-16 17:56:38 · 1926 阅读 · 0 评论 -
virtual 函数指定符
virtual 函数指定符virtual 指定符指定非静态成员函数为虚并支持动态绑定。它只能出现在非静态成员函数首个声明(即它声明于类定义中时)的 decl-specifier-seq 中。解释虚函数是在派生类中行为可被覆写的成员函数。与非虚函数相反,覆写的行为会受到保留,即使没有关于该类实际类型的编译时信息。若使用到基类的指针或引用处理派生类,则对被覆写虚函数的调用,将会调用定义于派...翻译 2019-01-08 14:03:49 · 227 阅读 · 0 评论 -
c++类型支持(基本类型、RTTI、类型特性)
类型支持 (类型系统综述可参阅类型)基本类型语言定义的基础类型附加性基本类型及宏 定义于头文件 <cstddef> size_t sizeof 运算符返回的无符号整数类型 (typedef) ptrdiff_t 在两个指针相减时返回的有符号整数类型 (typedef)...翻译 2019-01-09 14:44:08 · 717 阅读 · 0 评论 -
内存地址对齐的思考和总结
内存地址对齐,是一种在计算机内存中排列数据、访问数据的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐。当今的计算机在计算机内存中读写数据时都是按字(word)大小块来进行操作的(在32位系统中,数据总线宽度为32,每次能读取4字节,地址总线宽度为32,因此最大的寻址空间为2^32=4GB,但是最低2位A[0],A[1]是不用于寻址,A[2-31]才能存储器相连,因此只能...转载 2019-02-19 09:52:42 · 1286 阅读 · 1 评论 -
C实现CPU大小端判断
C实现CPU大小端判断所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。比如 0x12345678 在大端机上是 12345678,在小端机上是 78564312,而一个主机是大端还是小端要看CPU类型以及运行在上面的操作系统。同一款CPU在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的 x86 + windows是小端。//测试大小端一般使用 u...转载 2019-02-19 09:52:19 · 123 阅读 · 0 评论 -
C++中static_cast和dynamic_cast强制类型转换
在C++标准中,提供了关于类型层次转换中的两个关键字static_cast和dynamic_cast。一、static_cast关键字(编译时类型检查)用法:static_cast < type-id > ( expression ),该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性,它主要有如下几种用法:(1)用于基本数...转载 2019-04-18 13:25:52 · 219 阅读 · 0 评论 -
逗号运算符和逗号表达式
逗号运算符和逗号表达式逗号运算符逗号运算符是以逗号为分隔符的列表中最后一个表达式的值。 本质上讲,逗号的作用是导致一系列运算都被顺序执行。最右边的那个表达式的值将作为整个逗号表达式的值,其他的表达式的值将会被丢弃。逗号运算符是所有运算符中级别最低的。例如,有如下表达式:var = (count = 19, incr = 10, count + 1);1上式在计算时,首先将...转载 2019-01-10 13:33:02 · 1193 阅读 · 0 评论 -
typeid详解
typeid详解Posted on 2010-05-14 10:58 乱78糟 阅读(57668) 评论(9) 编辑 收藏 引用 所属分类: C语言派系 在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作...转载 2018-12-25 14:54:50 · 1427 阅读 · 0 评论 -
关于c/c++中的64位整形数的一些心得
今天把实现与fpga通信的过程中碰到的一些问题集中罗列一下,做一个总结,让自己以后再碰到这些问题不再有疑问。下面这些问题其实是理解计算机和程序最基本的问题,这些问题在《深入理解计算机系统》中有很深入的讨论,我就是在看完这本书的第三版的相关章节后才算是理解的比较清晰了。1.关于64位整形数的问题。fpga工程师给我的通信协议中有一个需要计算信号频率的公式是:下发数值=频率/1000000...原创 2018-12-05 11:18:55 · 1612 阅读 · 0 评论 -
C++ Explained: Object initialization and assignment, lvalues and rvalues, copy and move semantics an
C++ Explained: Object initialization and assignment, lvalues and rvalues, copy and move semantics and the copy-and-swap idiomFebruary 27, 2013Leave a commentGo to comments 3 Votes...翻译 2018-12-22 09:59:44 · 426 阅读 · 0 评论 -
The new C++ 11 rvalue reference && and why you should start using it
The new C++ 11 rvalue reference && and why you should start using itIntroduction This is an attempt to explain new && reference present in latest versions of c...翻译 2018-12-22 09:59:06 · 698 阅读 · 0 评论 -
Eliminate False Sharing
Eliminate False SharingBy Herb Sutter, May 14, 2009 Stop your CPU power from invisibly going down the drainIn two previous articles I pointed out the performance issue of false sharing (aka ca...原创 2018-12-22 09:58:48 · 775 阅读 · 0 评论