先看一下ruby中printf "%x" % -4的返回结果:

irb(main):134:0> printf "%x\n" % -4
..fc

前面的..是神马东东???看了matz的文章略知了一二.

在ruby中如果是x86则Fixnum是32位,如果是x64则Fixnum是64位,超过长度的数字会变为Bignum.在Bignum内部,分别保存符号和绝对值,绝对值以整数数组形式存放,数组的元素是若干32位无符号整数.而Bignum符号另外保存,与Fixnum不同,内部没有采用2的补码,但位运算表面上好像是采用了2的补码.对于ruby的位运算,负整数的左侧貌似是无限多的1,所以前面的f前面的..符号表示无限多个1啊!

正如matz所说:这谜一般的..字符串,那闲的蛋疼的猫...

ruby中printf "%x"%-4为何会打印开头..的更多相关文章

  1. 打印文本中的所有单词,并且打印每个单词出现的行号,非实义单词不考虑(TCPL,练习6-3)

    建立一棵二叉树,每个接单存放单词以及指向一个链表的指针,以及指向左右节点的指针.链表内存放行号以及指向下一个链表节点的指针. 每录入一个单词,先寻找二叉树,再寻找它的链表,分别将单词和行号插入二叉树和 ...

  2. [翻译]理解Ruby中的blocks,Procs和lambda

    原文出处:Understanding Ruby Blocks, Procs and Lambdas blocks,Procs和lambda(在编程领域被称为闭包)是Ruby中很强大的特性,也是最容易引 ...

  3. 理解Ruby中的作用域

    作用域对于Ruby以及其它编程语言都是一个需要理解的至关重要的基础知识.在我刚开始学习ruby的时候遇到很多诸如变量未定义.变量没有正确赋值之类的问题,归根结底是因为自己对于ruby作用域的了解不够, ...

  4. Ruby中 使用Builder Xml Markup 操作XML

    =begin Ruby中 使用Xml Markup 轻松的对XML文档操作, 项目地址:http://builder.rubyforge.org/ 使用之前我们需要安装Builder xml mark ...

  5. ruby中如何直接编译运行C代码

    我们知道ruby通过C EXT可以很方便的运行C代码,其实只要是C接口的语言都可以,比如汇编语言也可以哦.但是一些简单的函数难道还得费劲用C扩展的方式吗?其实ruby gem里有RubyInline包 ...

  6. 单片机中printf函数的重映射

    单片机中printf函数的重映射 一.源自于:大侠有话说 1.如果你在学习单片机之前学过C语言,那么一定知道printf这个函数.它最最好用的功能 除了打印你想要的字符到屏幕上外,还能把数字进行格式化 ...

  7. ruby中的作用域

    作用域(scope)指的是变量的可达性或可见性.不同类型的变量有不同的作用域规则.与self类似,作用域在程序的执行过程中也在不断的变化,也可以根据上下文推断出"谁在什么作用域中" ...

  8. Ruby中的数值

    数值类型 Ruby中所有数值都是Numeric类的子类对象,数值都是不可变对象. 数值类型的继承关系如下: Integer是整数,Float是浮点数类型,Rational是分数. 对于整数,要么是Fi ...

  9. C/C++ 中 `printf` 格式化

    作为强类型静态语言,类型不仅规定了可以对数据进行的操作,还决定了应该怎样在 printf 中输出. printf 的签名是: int printf ( const char * format, ... ...

随机推荐

  1. FFmpeg源代码简单分析:avformat_alloc_output_context2()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  2. C++ string类型占几个字节

          在C语言中我们操作字符串肯定用到的是指针或者数组,这样相对来说对字符串的处理还是比较麻烦的,好在C++中提供了 string 类型的支持,让我们在处理字符串时方便了许多.这篇文章并不是讲解 ...

  3. [openwrt] uci 的shell和lua接口

    uci是openwrt上配置操作的接口,不管是自动化的shell脚本,还是使用luci来二次开发配置界面,都会用到这部分知识. uci提供了lua, shell, c接口,这里主要用到了前两种 she ...

  4. Android初级教程XUtils实现“断点续传”下载

    对于"断电续传",在任何开发中都显得很重要.xutils对此封装的很好了,可以很简单的实现很多下载功能,其中就包括"断点续传" 主要代码如下: package ...

  5. 错误:One or more post-processing actions failed. Consult the OPP service log for details

     今天在做采购出入库明细报表的时候,有的时候能正常打印,有的时候报 One or more post-processing actions failed. Consult the OPP serv ...

  6. How to Use Kdiff3 as a 3-way Merge Tool With Mercurial, Git, and Tower.app

    How to Use Kdiff3 as a 3-way Merge Tool With Mercurial, Git, and Tower.app Jan 12th, 2012            ...

  7. Eclipse快捷键指南

    Eclipse快捷键指南 Eclipse快捷键,熟悉快捷键可以帮助开发事半功倍,节省更多的时间来用于做有意义的事情.Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ct ...

  8. Google的两种广告推广方式

    1搜索关键字广告推送:AdWords: 覆盖广泛:在全球最大的搜索和网络平台上进行推广. 定位精准:锁定目标客户群体,让潜在客户轻松找上门. 成本可控:仅当用户点击广告时,您才支付费用. 2.网站内容 ...

  9. Linux多线程实践(3) --线程属性

    初始化/销毁线程属性 int pthread_attr_init(pthread_attr_t *attr); int pthread_attr_destroy(pthread_attr_t *att ...

  10. naoting

    生活就像一锅菠菜汤 20160714 夜