随笔分类 -  计算机原理

摘要:比如: long l1 = 4294967297; //二进制为1 00000000 00000000 00000000 00000001 float f1 = l1; var str1 = ToBinString(BitConverter.GetBytes(f1)); long l2 = (lon 阅读全文
posted @ 2024-12-10 23:19 yanghui01 阅读(20) 评论(0) 推荐(0)
摘要:6位是绝对有效数字。第7位有时候准确,有时候不准确。 例1 float f1 = 1234560.991f; Console.WriteLine($"{f1}"); 执行上面的代码,会输出1234561,这个例子中就是第7位数字不准。 按float转二进制步骤分析下: 1) 整数部分的二进制为: 1 阅读全文
posted @ 2024-12-10 23:16 yanghui01 阅读(332) 评论(0) 推荐(0)
摘要:float最大值 即float.MaxValue,二进制为:0(111 1111 0)(111 1111 1111 1111 1111 1111)。 转为10进制: 1)符号位(31位) 0,即正数 2)求出指数(23~30位) 指数=指数部分的值-127:0b1111 1110 - 127 = 2 阅读全文
posted @ 2024-12-10 23:15 yanghui01 阅读(39) 评论(0) 推荐(0)
摘要:以12.125 + 3.025为例: 设a = 12.125, 二进制为:01000001 01000010 00000000 00000000 Sa = 0, Ea = 1000 0010, Ma = 1.1000010 00000000 00000000 设b = 3.25,二进制为: 0100 阅读全文
posted @ 2024-12-09 22:50 yanghui01 阅读(31) 评论(0) 推荐(0)
摘要:float占用4字节(32位),各bit的用途 31位:符号位,正数为0,负数为1。 23~30位:(指数部分,共8位):值减掉127后,表示小数点移动位数。比如:129表示小数点左移2位,124表示小数点右移3位。值为255有特殊用途,用于表示Infinity。 0~22位:(尾数部分,共23位) 阅读全文
posted @ 2024-12-09 22:40 yanghui01 阅读(181) 评论(0) 推荐(0)
摘要:1) 16进制字符串 a) c#内置api byte[] bytes = BitConverter.GetBytes(123); var hexStr = BitConverter.ToString(bytes); b) 实现1 ///返回低字节顺序十六进制字符串(低字节在左侧) public st 阅读全文
posted @ 2024-11-08 22:41 yanghui01 阅读(137) 评论(0) 推荐(0)
摘要:代理区介绍 代理区(Surrogate)是基本多文种平面(Basic Multilingual Plane)中的一块保留区域,Unicode码范围为0xD800-0xDFFF,这个范围内的Unicode码约定了不会对应任何的字符。 其中又将0xD800-0xDBFF用于高代理,将0xDC00-0xD 阅读全文
posted @ 2024-09-12 00:11 yanghui01 阅读(161) 评论(0) 推荐(0)
摘要:什么是Unicode编码? Unicode是字符编码规范,它定义了所有文字的编码规则。说通俗点就是它按照某个规则给每个字符都分配了一个数字编号(比如:'A'的编号为65或0x0041,'万'的编号为19981或0x4e0d),相当于是一个编号库。这个数字编号也叫Unicode码。最开始这个编号使用2 阅读全文
posted @ 2024-09-05 00:40 yanghui01 阅读(1097) 评论(0) 推荐(0)
摘要:原理 1) 异或运算法则:异或的两个bit相同结果为1,不同结果为02) 一个数^0还是自身, 没有任何效果,因为0^0=0, 1^0=1。例子:0b0101,1010 ^ 0b0000,0000=0b0101,10103) 单个bit^1是取反的效果,0^1=1, 1^1=0,所以一个int变量^ 阅读全文
posted @ 2022-11-19 22:31 yanghui01 阅读(117) 评论(0) 推荐(0)
摘要:先上结论 1) 右移:左侧会使用符号位补齐,比如:对于负数,右移时左侧补1;对于正数,右移时左侧补0;2) 左移:符号位也会被左移,右侧补03) 取反:符号位也会被取反 测试代码 //有符号数 static void Print(int a) { Console.WriteLine($"{Conve 阅读全文
posted @ 2022-11-19 22:10 yanghui01 阅读(61) 评论(0) 推荐(0)
摘要:正数和负数的补码区别 1) 对于正数,原码和补码相同 2) 对于负数,先得到反码,再计算补码反码:除符号位外取反补码:反码+1 补码示例 1) 35原码:0010,0011补码:0010,0011 2) 18原码:0001,0010补码:0001,0010 3) -18原码:1001,0010反码: 阅读全文
posted @ 2022-11-19 22:02 yanghui01 阅读(457) 评论(0) 推荐(0)