有无符号的整数、二进制

无符号的整数

以原码的形式存在于内存中,假如此整数占1个字节(为了简化),从小到大为0-256,对应二进制为0000 0000 -- 1111 1111。

有符号的整数

正数以原码的形式存在于内存中,负数以补码的形式存在于内存中,正数从1-127,对应二进制为0000 0001--0111 1111;负数从小到大为-128到-1,1000 0000--1111 1111。
这样做的原因是为了,1.避免了出现正0和负0这两个相等的数字。2.可以将减法转换成加法处理。1-1 0000 0001 + 1111 1111 = 0000 0000溢出位不管。

忘了它的类型

看看如何不通过中间变量去交换两个变量的值我们不用去理会内存中的是什么类型的数据,仅仅是将内存中的二进制做一个交换。
a:1011 0010和b:0111 1100
a与b每位都做异或操作 a = a ^ b;a:1100 1110
a与b每位都做异或操作 b = a ^ b;b:0111 1100
a与b每位都做异或操作 a = a ^ b;a:1011 0010
这样就完成了交换,不管是什么类型的值,不用理会它是什么类型的值,这样都可以交换块相同大小的内存块的值。有时候有了我们赋予它类型太久了,忘了它仅仅是1010……了。
通过这种方式也可以实现一个简单的对称加密。

write by fgd << "如有转载请注明出处cnblogs.com/wendao"

转载于:https://www.cnblogs.com/wendao/archive/2012/08/09/2630939.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值