##一、文章来由 同属计算机储存,补码问题的延生~~ ##二、解密 答案输出是-128,为什么呢? char型变量c中存储的是128的补码:10000000。上一篇文章已经说到,对于计算机来说,存储的都是数据的补码。 赋值给char型,debug模式下反汇编如下:...…
补码转原码(算术左移一位负变正)
##一、文章来由 还是上一篇关于移位的问题,那么什么 int 型数只算术左移一位就可以从负数变成正数??? ##二、又谈补码 很早之前写过一篇关于补码的文章,但是长时间不看又差不多忘记了,翻出来看发现写的挺烂的,有点没说明白,所以希望这里能说明白~~...…
关于左移和右移
##一、文章来由 项目需要将一个int拆开成高16位和低15位存不同的id,形成一个新的id,所以~~~ ##二、算术移位和逻辑移位 算术移位—有符号数的倍增、减半; 逻辑移位—无符号数的倍增、减半. 比如一个有符号位的8位二进制数11001101,逻辑右移就不管符号位,如果移一位就变成01100110。算术右移要管符号位,右移一位变成10100110。...…
Unicode编码完全探究(二)
##一、文章来由 上一篇文章我们已经探究了基本的Unicode编码,这一篇继续来探究Unicode编码~~~ ##二、字符简史 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。 开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上0×10,...…
Unicode编码完全探究(三)
##一、文章来由 这个乱码问题很早以前就发现了,其实就是编码的问题导致~~~ ##二、现象 新建一个文本文档,输入“联通”二字(不带引号),然后保存、关闭,再重新打开。你发现了什么?没错,“联通”二字已经变成了乱码“��ͨ”,那么为什么会产生这种情况呢?这就要涉及到字符编码的问题了。 ##三、原因 在计算机技术刚出现的时候,只有ASCII这一种字符集,但是随着技术的发展,ASCII明显不够用了,因为ASCII码一共只规定了128个字符的编码,英语是够用了,但是其他语言不行,于是就又产生了其他的编码标准,比如简体中文的是GB2312编码。但是由于每种语言都制定了自己的字符集,导致最后存在的各种字符集实在太多,在国际交流中要经常转换字符集非常不便。因此,提出了Unicode字符集,它固定使用16...…
Unicode编码完全探究
##一、文章来由 好久没有写博客了,最近博主再做一个比较大的项目,这个项目可能要延续到明年4月份左右,不过我还是尽量找时间写博客。说完题外话,关于这个题目选择,因为这是一个没有完全搞懂的问题,所以需要把它搞懂~~ ##二、从ASCII码说起 ###1、ASCII的出现 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,也就是现在的ASCII码。...…